Gary L. Simmons  rev 08/21/03  http://webwonks.org/Marathon/Anvil/HAS/PrefsMod.html
Home  Marathon  Joke OT Weak  Web Building  Resumé  Lynx  Hobbies  Extra  Site Map Links Page Extra Go to next department


The Battle Cat's Litterbox


Anvil Tips | HAS Tutorials | Edit Notes | Sounds & Music | Images File | Tools | Nonstandard Colors | Control Modifications | HUD Modifications | Prefs Modifications | PICT Notes | Engine Hacking | Documentation | Bandwidth Saving | Unused Sounds | Hakvil | Shapes 1 | Shapes 2 | Color Clippings | Custom Icons | Clut Notes


Hacking the Infinity Preferences Dialogues


So guys, what are your preferences? Do you prefer to gather up your flimsy lace garments and swish into a room singing Japanese opera in a high piping falsetto or do you prefer to gather up your high power armaments, smash open the titanium hatch and blast horrified alien slavers to a Dantean Hell? [ Vote First Preference, Vote Second Preference ] Wow, the poll says 50-50... gosh... where do I go from here? I really expected something, er, a little more skewed in one direction guys. Well, while I digest that bit of info, you folks read the tutorial. Criminy. - gls


This is something that's probably only of interest to TC-makers who want to better customize the Marathon Infinity engine to their needs (e.g. changing names, removing net play-related settings and info from solo-only projects, removing unused/unwanted controls/check boxes/menus). Note that this sort of thing has 'Kludge' written all over it; however, done correctly you'll get totally functional and professional-looking results. (Done wrongly you'll probably just get lots and lots of crashes.)

Obviously, these changes require that you distribute them as a patch (as with any engine mods, _don't_ distribute the entire engine, as that sort of thing tends to piss off the original author of the thing [i.e. Bungie, in this case]).

The first motto of this is "Don't Delete Anything", BTW. To be exact, you can move, hide, resize or disable stuff just fine, but if you delete anything ­ be it a menu, check box or text field [note that you can alter/delete the _contents_ of static text fields just fine, as long as you don't delete the item itself] ­ then you will _totally_ screw up the internal workings of the Marathon Infinity engine. All items in dialogue boxes are numbered in sequence, and the engine code refers to them by this, so if you do anything that changes that numbering the engine code will refer to all the wrong stuff and break.

Where the interesting stuff is

In the Marathon Infinity resource fork, you'll find various bits and pieces worth exploring:

 Marathon resources windowDLOG
This determines how dialogue windows appear on-screen. The only change you might want to make there is the position of the thing (you can also resize the box, though this can just as easily be done working in the DITL resource). Leave everything else alone. ID#4000 is the Prefs dialogue. ID#1000 is the Keyboard settings dialogue [#1001 is a altered version of the same, though I don't think it's ever used]. (Oh yeah, and ID#137 is the Vidmaster dialogue...:) All other changes you'd want to make to dialogue boxes are made through the DITL resources (you can jump to them directly from the DLOG box by double-clicking, if you wish).

DITL
This is where the fun begins.

ID#4000 — is the basic Preferences dialogue box. Not an awful lot you can do with this, other than resize it (if you so need) and jig the elements around. I have no idea why there doesn't appear to be an item present for the 'Preferences' graphic (not that this stops you altering the contents of that graphic - you'll find it in the PICT resource, naturally enough). The specifics that appear in this box are held in resources #4001-5.

ID#4001 — Graphics preferences. It's unlikely you'll feel the need to alter any of this. Personally, I've hidden the 'Number of Colors' menu for projects that have been designed as 256 colors only, but that would be another story...

ID#4002 — Player preferences. This might be worth modifying for Solo-only projects where there isn't and Shapes/Sounds/Map support for net play. You can remove all the text from the static text boxes and resize them so they don't get in the way. The Color and Team menus can be hidden by double-clicking on them to find out their CNTL resource IDs (#142, #136) and then going to those resources and setting 'Visible' to False. Hiding the player name Edit Text field is slightly more tricky, but what seems to work OK is to double-click on it, set it to a Static Text item and set height and width to 0.

ID#4003 — Sound preferences. You may want to hide/delete the text from the Static Text item at the bottom (or at least change 'Marathon' to that of your own project; but this text has gotten so _old_ anyway...). One other change that may be well worthwhile here is to hide the 'High-Quality' check box, which is a good idea if you are distributing a Sounds file that contains sounds only in the 8-bit slots and you wish to prevent folks foolishly selecting 16-bit sounds (in which case they'll note hear a damn thing). In this case, double-clicking the thing and setting its size to 0 should do the trick.

ID#4004 — Control preferences. It's unlikely there's anything you'd want to do here.

ID#4005 — Environment preferences. You may want to change/hide the text blurb at the bottom again. Also, if your TC is at least partially 'closed', you might want to hide some of the menus (e.g. Shapes, Sounds) to ensure that folks won't try to change these to use Shapes/Sounds that aren't yours.

MENU
The interesting stuff is:

ID#1000 — Team/Player colors. Useful if you start changing the Marine's CLUT in the Shapes file around so that different Player colors are used.

ID#2002 — Color depth. If you're creating a project that _isn't_ 256 Color-compatible, then it's a good idea to disable the '256' option in this menu. The only way to cleanly disable options under a menu that I know of is to open up the menu editing dialogue, select the entry in question and change its setting to 'separator line' (deleting the entry won't work, and merely unchecking 'enable' and/or deleting the text doesn't seem to disable the thing). Visually, it's not 100% beautiful, but it stops the option being selected by the user, which is the important thing.

ID#2004 — Difficulty. In case you've thought of much more interesting terminology to use.:)

CNTL
This contains various parameters for pull-down menus in dialogue boxes. Someone else should write this though; if you have a need to do anything more than mess with the 'Visible' setting then you're probably best to ask a programmer what everything here does.

STR#
Not much to mention about this as far as modifying the Preferences dialogue goes (though it's chock-full of other sorts of treats), except that the names for the different Preferences sections are found in STR#139. It's not worth changing the names just for the sake of it (it'll probably only confuse folks). One trick that might be of interest is that if you delete the text ('Environment') from the last field, the Marathon Infinity Preferences will no longer display an option for selecting different support files (maps, etc). Presumably this is a feature included by Bungie for use on demo versions of the engine. The only time I can think where it might be useful is for a 'closed' TC, where you don't want players to be able to change map, PM, etc. from your own.

The only other thing I've ever messed with in the Marathon Infinity Prefs is the Configure Keyboard preferences. However, since Marathon Infinity also has an option on InputSprockets, and at last some folks prefer to use this over keys, it's not worth messing with this dialogue unless you either figure out how to hack the Sprockets dialogues to keep them similar (unlikely), or are doing something really different that means you are seriously rearranging key attributes in Fux, etc. and can also afford to cut out the Sprockets option totally. AFAIK, I'm the only person [mad enough] to do this sort of thing, though just to give an idea of how far it's possible to modify the look and behavior of Marathon Infinity, I've included a screen shot of a modified dialogue below:

 Modified dialog window

As you can see, just about anything's possible, once you know how. The trick though is to know the limits of what can and can't be done (and have a solid reason for doing it in the first place, of course).



Anvil Tips | HAS Tutorials | Edit Notes | Sounds & Music | Images File | Tools | Nonstandard Colors | Control Modifications | HUD Modifications | Prefs Modifications | PICT Notes | Engine Hacking | Documentation | Bandwidth Saving | Unused Sounds | Hakvil | Shapes 1 | Shapes 2 | Color Clippings | Custom Icons | Clut Notes

Top of page

Back to the Litterbox