Cheats
  • As with MM6 thru 8, there are no built-in cheat codes that you can type in while playing, so I decided to once again make available to you some information on editing the savegame files for those of you who know how to do such things.

    The file to edit will be in the "SaveGames" directory under the "Might and Magic IX" directory. It will have the name you gave your save, plus the extension of ".HDR". Load that up in your favorite file-editing tool and go to sector 234 (that's decimal, as all my numbers here are) to start things off.

    The first letter of the name of the first (top) character in your party will be in sector 234 at byte 280. That's where the convenience ends, however, since the length of a character's record can vary according to several things, including how many items he has in his inventory. Here is the complete format for a character record:

    Name: 31 bytes (30 name characters terminated with a null value of numeric 0)
    (unknown): 34 bytes
    Level: 4 bytes
    Experience: 4 bytes
    (unknown): 4 bytes
    Current HP: 4 bytes
    (unknown): 4 bytes
    Number of temporary bonuses: 4 bytes
    Temporary bonus data: 28 bytes *times* number of temporary bonuses (this is a variable-length record)
    (unknown): 36 bytes
    Resistances: 20 bytes (five records of 4 bytes each)
    (unknown): 26 bytes
    Number of inventory items: 4 bytes
    Inventory items: 30 bytes *times* number of inventory items (this is a variable-length record)
        Each 30-byte inventory item record consists of:
            Item ID number: 4 bytes   (item list is in game's DATA\DATA.REZ file, starting at byte 471,922)
            Concatenation: 4 bytes   (105 is no concatenation)
            Quality: 4 bytes    (0 = normal, 1 = good, 2 = excellent)
            Spell number for wands: 4 bytes    (50 is used for "no spell" for all non-wand items)
            Identified status: 1 byte    (1 = item is identified)
            Broken status: 1 byte    (0 = not broken)
            Magic charge: 4 bytes
            Value added: 4 bytes   (the amount of value added to the item's base value)
            (unknown): 4 bytes
    Readied item status: 64 bytes (sixteen 4-byte records; a 1 in a record means a readied item exists)
    Readied items: 30 bytes *times* the number of readied item status slots that have a 1 (variable-length)
    (unknown): 4 bytes
    Class: 4 bytes
    (unknown): 36 bytes
    Max HP: 4 bytes
    Current SP: 4 bytes
    Max SP: 4 bytes
    (unknown): 4 bytes
    Skill Points: 2 bytes
    (unknown): 16 bytes
    Stats: 30 bytes (six 5-byte records; each record is a four-byte stat value plus a flag for having drunk that stat's Pure potion)
    Spells: 49 bytes (49 one-byte records; a 1 means the spell is in the spellbook)
    Skill levels: 92 bytes (twenty-three 4-byte numbers that hold the skill levels)
    Skill mastery: 92 bytes (twenty-three 4-byte records; 0 = normal *thru* 3 = grandmaster)

    As for party gold, make a note of your current value and then search for it. It'll be just a short ways after the last character's record. Set it up way high if you want to train four characters to high levels. Another way to get lots of gold is to set one inventory item's "value added" field to a huge number and then sell the item.

    Some enterprising Windows programmer could probably use the above information to write a nice character editing program for MM9 that would be fun and easy to use for the average user. If such a program is ever written, be sure to send me a copy! (I've already written one with an old DOS compiler, and you can get it from me for free by sending a request to dunigase@yahoo.com).