- A Treatise Onne The Anatomy Of The Savedh Games Of - - 'Ye Master Offe Magic' - by *Zastai* Note: MOMGAME.EXM contains example data and explanations illustrating the information in this file. If you have any additions to make to this file, mail them to: Tim Van Holder NOTE: 2003.Sep.27 - Tim is no longer interested. Now e-mail any additions to Eljay so they can be included in eventual new editions. ->The Saved Game Offset in File Size in bytes Contents 0x0000 0x0C * 35 * 5 Hero stats (12 bytes * 35 heroes * 5 wizards) 0x09E8 0x4C8 * 5 Wizards (You + 4 opponents) 0x6FB8 0x20 * 128 Items 0x88B8 0x20 * 10 Trashcan for destroyed items (do not edit) 0x8AA8 0x72 * 100 Cities 0xB734 0x20 * 1000 Units Rest: Map info and other stuff Other Interesting Locations --------------------------- Offset in File Size in bytes Contents 0x09DE 0x01 Difficulty (0=tutorial, 1=easy, 2=normal, 3=hard, 4=impossible) 0x09E2-09E3 0x02s Number of Units (0 ... 1000) Detailed descriptions: ---------------------- Notes on notation: Values marked int/long are stored little-endian, i.e. an int with a value of FF00 in the file corresponds to the hexadecimal value 0xFF (and not 0xFF00); a long that is 01234567 in the file means the hexadecimal value 0x67452301. Values marked s can have negative values. This means that 0x01s has a range of -128 to 127, while 0x01 has a range of 0 to 255. Values marked bitmask are not numbers but a collection of binary 'flags'; the state of individual bits is important. All numbers are decimal except when preceded by 0x, which indicates hexadecimal values. (eg 0x13 is 19 decimal) ->Hero Data To find the location of the following data in the file, use the following formula: offset = ((HeroNum + (WizNum * 35)) * 0x0C) + offset_in_hero HeroNum is 0 (Dwarf) ... 34 (Chosen) Offset in HERO Size in bytes Contents 0x00-01 0x02s Level & Status 0-8 = level (1 - 9) -1 .. -9 (0xFFFF .. 0xFFF7) = dead, level (1 - 9) -20 (0xFFEC) = active in Wizard's army Note: not updated until no longer part of the wizard's employed heroes 0x02 0x01 Hero Ability Bitmask 80 Blademaster* 40 Blademaster 10 Legendary* 08 Legendary 02 Leader* 01 Leader 0x03 0x01 Hero Ability Bitmask 80 Might 20 Constitution* 10 Constitution 04 Armsmaster* 02 Armsmaster 0x04 0x01 Hero Ability Bitmask 40 Sage* 20 Sage 08 Arcane Power* 04 Arcane Power 01 Might* 0x05 0x01 Hero Ability Bitmask 80 Agility 20 Noble 10 Charmed 08 Lucky 04 Agility* 02 Prayer Master* 01 Prayer Master 0x06 0x01 Casting Skill mp = (cast_skill + 1) * 2.5 (round down) 0x07 0x01 Spell 0 = none 1 = spell#0 (Earth to Mud) 2 = spell#1 (Resist Elements) ... 0x08 0x01 Spell (0 = none) 0x09 0x01 Spell (0 = none) 0x0A 0x01 Spell (0 = none) 0x0B 0x01 Garbage (yes, garbage!) ->The Wizard Data Note: to find the location of the following data in the file, use the following formula: offset_in_file = 0x9E8 + (WizNum * 0x4C8) + offset_in_wizard where WizNum is the wizard's number (0= you; 1-4=opponent) Offset in WIZARD Size in bytes Contents 0x000 0x01 Portrait (0-13) 0x001-015 0x01 * 21 Name (20 characters + '\0') 0x016-017 0x02s (int) BannerColor (0-4) 0x018-019 0x02s (int) Personality (0-5) 00=Maniacal 01=Ruthless 02=Aggressive 03=Chaotic 04=Lawful 05=Peaceful 0x01A-01B 0x02s (int) Objective (0-4) 00=Pragmatist 01=Militarist 02=Theurgist 03=Perfectionist 04=Expansionist 0x01C - 0x023 *Unknown* 0x024-025 0x02s (int) Fame 0x026 - 0x02D *Unknown* 0x02E-02F 0x02s (int) X Coordinate of Summoning Circle (0-59) 0x030-031 0x02s (int) Y Coordinate of Summoning Circle (0-59) 0x032-033 0x02s (int) Plane of Summoning Circle (0-1) 0x034 - 0x053 *Unknown* 0x054-055 0x02s (int) Unused Casting Skill available this turn 0x056-057 0x02s (int) Nominal Casting Skill available this turn 0x058 - 0x059 *Unknown* 0x05A-063 0x02s (int) * 5 Number of Spellbooks (0-12) (Na-So-Ch-Li-De) 0x064-075 0x01 * 18 Abilities (0 or 1) 0x076-111 0x1A * 6 Heroes hired by wizard, six slots 0x112 - 0x11D *Unknown* 0x11E - 0x11F *Unknown* 0x120-127 0x02s (int) * 4 Items in Slots (See below) 0x128 - 0x25B *Unknown* 0x25C-25D 0x02s (int) Mana Crystals 0x25E-261 0x04 (long) Casting Skill (actual skill is square root of value stored here, rounded up) 0x262 - 0x263 *Unknown* 0x264-339 0x01 * 214 Spells (0-3) (Na-So-Ch-Li-De-Ar) 00=unknown 01=eventually researchable 02=research 03=known 0x33A - 0x357 *Unknown* 0x356-357 0x02s (int) Gold Coins 0x358-35B 0x04 (long) Adjusted Casting Skill (?) (actual skill is square root of value stored here, rounded up) 0x35D - 0x4C7 *Unknown* Field Values: Items: The values stored are the number of the item in the item array (which starts at 0x6FB8); 0 means the first item in the list. A value of -1 means that that slot is empty. Make sure you refer to an existing item when editing these values! Portrait: 0 Merlin 1 Raven 2 Sharee 3 Lo Pan 4 Jafar 5 Oberic 6 Rjak 7 Sss'ra 8 Tauron 9 Freya 10 Horus 11 Ariel 12 Tlaloc 13 Kali BannerColor: 0 Blue 1 Green 2 Purple 3 Red 4 Yellow Personality: 0 Maniacal 1 Ruthless 2 Aggressive 3 Chaotic 4 Lawful 5 Peaceful Objective: 0 Pragmatist 1 Militarist 2 Theurgist 3 Perfectionist 4 Expansionist Abilities (order in file): 0 Alchemy 1 Warlord 2 Chaos Master 3 Nature Master 4 Sorcery Master 5 Infernal Power 6 Divine Power 7 Sage Master 8 Channeller 9 Myrran 10 Archmage 11 Mana Focusing 12 Node Mastery 13 Famous 14 Runemaster 15 Conjurer 16 Charismatic 17 Artificer Spells (order in file): * NATURE 0 Earth To Mud 1 Resist Elements 2 Wall Of Stone 3 Giant Strength 4 Web 5 War Bears 6 Stone Skin 7 Water Walking 8 Sprites 9 Earth Lore 10 Crack's Call 11 Nature's eye 12 Ice Bolt 13 Giant Spiders 14 Change Terrain 15 PathFinding 16 Cockatrices 17 Transmute 18 Nature's Cures 19 Basilisk 20 Elemental Armor 21 Petrify 22 Stone Giant 23 Iron Skin 24 Ice Storm 25 Earthquake 26 Gorgons 27 Move Fortress 28 Gaia's Blessing 29 Earth Elemental 30 Regeneration 31 Behemoth 32 Entangle 33 Nature's Awareness 34 Call Lightning 35 Colossus 36 Earth Gate 37 Herb Mastery 38 Great Wyrm 39 Nature's Wrath * SORCERY 40 Resist Magic 41 Dispel Magic True 42 Floating Island 43 Guardian Wind 44 Phantom Warriors 45 Confusion 46 Word Of Recall 47 Counter Magic 48 Nagas 49 Psionic Blast 50 Blur 51 Disenchant True 52 Vertigo 53 Spell Lock 54 Enchant Road 55 Flight 56 Wind Mastery 57 Spell Blast 58 Aura Of Majesty 59 Phantom Beast 60 Disjunction True 61 Invisibility 62 Wind Walking 63 Banish 64 Storm Giant 65 Air Elemental 66 Mind Storm 67 Stasis 68 Magic Immunity 69 Haste 70 Djinn 71 Spell Ward 72 Creature Binding 73 Mass Invisibility 74 Great Unsummoning 75 Spell Binding 76 Flying Fortress 77 Sky Drake 78 Suppress Magic 79 Time Stop * CHAOS 80 Warp Wood 81 Disrupt 82 Fire Bolt 83 Hell Hounds 84 Corruption 85 Eldritch Weapon 86 Wall of Fire 87 Shatter 88 Warp Creature 89 Fire Elemental 90 Lightning Bolt 91 Fire Giant 92 Chaos Channels 93 Flame Blade 94 Gargoyles 95 Fireball 96 Doombat 97 Raise Volcano 98 Immolation 99 Chimeras 100 Warp Lightning 101 Metal Fires 102 Chaos Spawn 103 Doom Bolt 104 Magic Vortex 105 Efreet 106 Fire Storm 107 Warp Reality 108 Flame Strike 109 Chaos Rift 110 Hydra 111 Disintegrate 112 Meteor Storm 113 Great Wasting 114 Call Chaos 115 Chaos Surge 116 Doom Mastery 117 Great Drake 118 Call The Void 119 Armageddon * LIFE 120 Bless 121 Star Fires 122 Endurance 123 Holy Weapon 124 Healing 125 Holy Armor 126 Just Cause 127 True Light 128 Guardian Spirit 129 Heroism 130 True Sight 131 Plane Shift 132 Resurrection 133 Dispel Evil 134 Planar Seal 135 Unicorns 136 Raise Dead 137 Planar Travel 138 Heavenly Light 139 Prayer 140 Lionheart 141 Incarnation 142 Invulnerability 143 Righteousness 144 Prosperity 145 Altar Of Battle 146 Angel 147 Stream Of Life 148 Mass Healing 149 Holy Word 150 High Prayer 151 Inspirations 152 Astral Gate 153 Holy Arms 154 Consecration 155 Life Force 156 Tranquility 157 Crusade 158 Arch Angel 159 Charm Of Life * DEATH 160 Skeletons 161 Weakness 162 Dark Rituals 163 Cloak Of Fear 164 Black Sleep 165 Ghouls 166 Life Drain 167 Terror 168 Darkness 169 Mana Leak 170 Drain Power 171 Possession 172 Lycantrophy 173 Black Prayer 174 Black Channels 175 Night Stalker 176 Subversion 177 Wall Of Darkness 178 Berserk 179 Shadow Demons 180 Wraith Form 181 Wrack 182 Evil Presence 183 Wraiths 184 Cloud Of Shadow 185 Warp Node 186 Black Wind 187 Zombie Mastery 188 Famine 189 Cursed Lands 190 Cruel Unminding 191 Word Of Death 192 Death Knights 193 Death Spell 194 Animate dead 195 Pestilence 196 Eternal Night 197 Evil Omens 198 Death Wish 199 Demon Lord * ARCANE 200 Magic Spirit 201 Dispel Magic 202 Summoning Circle 203 Disenchant Area 204 Recall Hero 205 Detect Magic 206 Enchant Item 207 Summon Hero 208 Awareness 209 Disjunction 210 Create Artifact 211 Summon Champion 212 Spell Of Mastery 213 Spell Of Return -> The Hero Data Note: to find the location of the following data in the file, use the following formula: offset_in_file = 0x9E8 + (WizNum * 0x4C8) + (HeroNum * 0x1A) + offset_in_hero where WizNum is the wizard's number (0= you; 1-4=opponent) and HeroNum is the hero's slot number (0-5) OffSet in HERO Size Contents 0x00-01 0x02s (int) Unit Nr (see below) 0x02-0F 0x0E Hero name (13 characters + '\0') 0x10-15 0x02s (int) * 3 Items In Slot (see below) 0x16-1B 0x02s (int) * 3 Slot Types (0-6; see below) Field Values: Unit Number: The value stored is the number of the hero in the unit array (which starts at 0xB734); 0 means the first unit in the list. A value of -1 means that that slot is empty. Make sure you refer to an existing hero (not a non-hero unit!) when editing these values! Items: The values stored are the number of the item in the item array (which starts at 0x6FB8); 0 means the first item in the list. A value of -1 means that that slot is empty. Make sure you refer to an existing item when editing these values! Slot Types: 0 None (do not use; causes instability) 1 Sword 2 Bow 3 Sword/Staff/Wand 4 Staff/Wand 5 Armor/Shield 6 Amulet -> The Unit Data Note: to find the location of the following data in the file, use the following formula: offset_in_file = 0xB734 + (UnitNum * 0x20) + offset_in_unit where UnitNum is the unit's number (0-999) Offset in Unit Size in bytes Contents 0x00 0x01s X-Pos (0-59) 0x01 0x01s Y-Pos (0-39) 0x02 0x01s Plane 00=Arcanus 01=Myrror FF=Dismissed / Deceased 0x03 0x01s 'Owner' 00=Player 01=First Opponent 02=Second Opponent 03=Third Opponent 04=Fourth Opponent 05=Neutral Unit FF=Dismissed / Deceased 0x04 0x01s Moves Total (in 1/2 moves) 0x05 0x01 Icon Number (0x00 - 0xC5) 0x06 0x01s Hero Slot Number (0-5; -1 (0xFF) means not a hero) (see below) 0x07 0x01 Active 00=awaiting orders / "I need attention" (will "jump to" this unit when hitting wait) 01=finished (won't "jump to" this unit when hitting wait) 0x08 0x01s Moves Left (in 1/2 moves) 0x09 0x01s X-Pos of destination (should be 0 if status is not GOING TO) 0x0A 0x01s Y-Pos of destination (should be 0 if status is not GOING TO) 0x0B 0x01s Status (0-5) 00=ready 01=patrol 02=building road (in place) 03=going to X,Y destination (could be building road too, see 0x1C) 04=reached destination & expended (0x07 == 01) NOTE: it is a STATE MACHINE FAILURE to have 0x07 = 00 & 0x0B == 04! 05=wait until all other units have had a chance to go (then clears all flags) the SAVE game does not record if we are traversing UP or DOWN the units! ??=building road ??=purifying 0x0C 0x01 Level (Units: 0-5; Heroes: 0-8; Summon (other than Torin): 0) 0x0D 0x01 ?? 00 0x0E-0F 0x02s (int) Experience (should match level or level will be lowered) (Units: 0-120; Heroes: 0-1000; Summon (other than Torin): 0) 0x10 ?? 00 --- Guess 0x10 Lifedrain Damage (for turning into a Ghoul) --- /Guess 0x11 0x01s (int) Damage (in hearts) 0x12 0x01 Grouping (0 ... 255) NOTE: this is recalculated "on the fly" and (effectively) ignored from the save-file... so why bother saving it? Probably because the in-memory unit record is written out verbatim, including some superfluous information (from a save-file vantage point). 0x13-15 0x03 ?? 00 00 00 --- Guess 0x13 0x01 (bitmask) Combat Enchantment Flag #1 0x14 0x01 (bitmask) Combat Enchantment Flag #2 10=web 0x15 0x01 (bitmask) Combat Enchantment Flag #3 --- /Guess 0x16 0x01 ?? unknown 01=?? 02=?? 03=?? 0x17 0x01s (bitmask) Weapon type & Mutation Flags 80=stasis (lingering, hasn't been resisted, yet) 40=stasis (initial) 20=undead 10=chaos channels: demon wings 08=chaos channels: fire breath 04=chaos channels: demon skin /03=adamantium / 02=mithral \ 01=magic \00=normal 0x18 0x01 (bitmask) Unit Enchantment Flags #1 80=path finding 40=regenerate 20=wraith form 10=black channels 08=cloak of fear 04=berserk 02=guardian wind 01=immolation 0x19 0x01 (bitmask) Unit Enchantment Flags #2 80=invisibility 40=spell lock 20=endurance 10=iron skin 08=stone skin 04=elemental armor 02=resist elements 01=water walking 0x1A 0x01 (bitmask) Unit Enchantment Flags #3 80=holy weapon 40=true sight 20=eldritch weapon 10=flame blade 08=magic immunity 04=resist magic 02=flight 01=wind walking 0x1B 0x01 (bitmask) Unit Enchantment Flags #4 80=invulnerability 40=righteousness 20=holy armor 10=planar travel 08=giant strength 04=lion heart 02=bless 01=heroism 0x1C 0x01 Road Building (number of turns left to complete) 0x1D-1F 0x03 ?? parms for 0x1C seems to be "where built FROM, previous location" (probably important so as to move "naturally" to target MOVETO location) Field Values: Icon Number: 0x00-0x22: 35 Heroes (00=Brax; 22=Chosen One) => better heroes, higher number 0x23-0x26: 4 Inanimate units (23=Trireme, 24=Galley, 25=Catapult, 26=Warship) 0x27-0x9A: 115 Racial units (Sorted by race, then by power) 0x9B-0xC5: 44 Magical (summoned) Creatures Status: 0 Ready 1 Done 2 Patrolling 3 Going to (be sure to set destination coordinates) others for building/purify: unknown Weapon Type & Mutation: The lower 2 bits determine weapon type: 00 (0) normal 01 (1) magical 10 (2) mithril 11 (3) adamantium The upper 6 bits are mutation flags: Bit 2: Chaos Channels: Demon Skin Bit 3: Chaos Channels: Fire Breath (->NO RANGE ATTACK) Bit 4: Chaos Channels: Demon Wings Bit 5: Undead Bit 6 & 7: Stasis Notes on converting units to heroes: Follow the following steps to convert a unit to a hero: -) choose any unit in the unit list -) set Owner to 00 (your property) -) set hero Nr to the number of your free hero slot -) set Icon to the desired hero number -) fiddle with level/xp/mutation etc. as desired -) note the units index in the list -) go to the wizard data -) change the Unit Nr entry for the selected hero slot to the units number -) Name the hero (terminate the name with '\0') -) Give the hero 3 item slots (eg sword/armor/misc) You've got yourself a hero!! -> Item Data Note: to find the location of the following data in the file, use the following formula: offset_in_file=0x6FB8+(ItemNum*0x32)+offset_in_item where ItemNum is the item's number (0-127) WARNING: An Item may have no more than 5 (five) powers/bonuses/spells total. OffSet in Item Size in bytes Contents 0x00 0x01 * 31 Item's Name (30 characters + '\0') 0x1E 0x02s (int) Icon (0-0x73; see below) 0x20 0x01s Slot Required (0-6; see above) 0x21 0x01s Item Type (0-8; see below) 0x22 0x02s (int) Cost 0x24 0x01s * 7 Bonuses 0x2B 0x01 Spell Number Charged + 1 (-> 0 means no spell charge) 0x2C 0x02s (int) Number Of Charges 0x2E 0x01 * 4 (bitmasks) Powers Field Values: Icon: Range Item Type 0x00 0x08 Sword 0x09 0x13 Mace 0x14 0x1C Axe 0x1D 0x25 Bow 0x26 0x2E Staff 0x2F 0x36 Chain Mail 0x37 0x3D Plate Mail 0x3E 0x47 Shield (Note: Icon 0x46 and 0x47 are identical) 0x48 0x49 Pendant 0x4A 0x4D Brooch 0x4E 0x53 Ring 0x54 0x59 Cloak 0x5A 0x5D Gauntlet 0x5E 0x64 Helmet 0x65 0x6A Orb 0x6B 0x73 Wand Item Type: 0 Sword 1 Mace 2 Axe 3 Bow 4 Staff 5 Wand 6 Various 7 Shield 8 Chain Mail 9 Plate Mail Cost: The mana gained when destroying an item is equal to half its cost/value. Bonuses: Byte Effect 1 +Attack 2 +To Hit 3 +Defense 4 +Movement (in halves) 5 +Resistance 6 +Spell Points 7 -Spell Save Powers: Note: Some powers only have an effect when on a weapon. (eg Vampiric) Byte Bit Power 1 0 Vampiric 1 1 Guardian Wind 1 2 Lightning 1 3 Cloak Of Fear 1 4 Destruction 1 5 WraithForm 1 6 Regeneration 1 7 PathFinding 2 0 Water Walking 2 1 Resist Elements 2 2 Elemental Armour 2 3 Doom (= Chaos) 2 4 Stoning 2 5 Endurance 2 6 Haste 2 7 Invisibility 3 0 Death 3 1 Flight 3 2 Resist Magic 3 3 Magic Immunity 3 4 Flaming 3 5 Holy Avenger 3 6 True Sight 3 7 Phantasmal 4 0 Power Drain 4 1 Bless 4 2 LionHeart 4 3 Giant Strength 4 4 Planar Travel 4 5 Merging 4 6 Righteousness 4 7 Invulnerability Example: suppose byte 2 had a value of 0x60. This means that bits 6 and 5 are set (0x60 == 01100000 binary) => Haste & Endurance. Note: The different items that can appear in a savegame are stored in ITEMDATA.LBX. There are 250 item records in there and they have the same layout, except for a few (6) bytes at the end of each record. These seem to have no real meaning (perhaps they are an indication of how rare an item is and of where it can be gotten). So edit this file if you want to create your own Whammo(TM) Items without the restrictions of Itemmake. (The first record starts at 0x224). -> The City Data Note: to find the location of the following data in the file, use the following formula: offset_in_file=0x8AAC+(CityNum*0x72)+offset_in_city where CityNum is the city's number (0-99 (or more?)) Offset in City Size in bytes Contents 0x00 0x01 * 14 City Name (13 characters + '\0') 0x0E 0x01s Race (0-0x0D; see below) 0x0F 0x01s X-Pos (0-59) 0x10 0x01s Y-Pos (0-59) 0x11 0x01s Plane (0 or 1) 0x12 0x01s 'Owner' (0-4) 0x13 0x01s Size (0-5; see below) 0x14 0x01s Population (in thousands) (0-25) 0x15 0x01s Number of farmers allocated (should be <= population) 0x16 - 0x1B *Unknown* 0x1C 0x01 Producing (0-??; see below) 0x1D - 0x1F *Unknown* 0x20 0x01s * 35 Building Status (see below) 0x43 0x01s * 25 City Enchantments 0x5C 0x01s Nightshade (0 or 1) 0x5D - 0x71 *Unknown* Field Values: Race: 0 Barbarian 1 Beastman 2 Dark Elf 3 Draconian 4 Dwarf 5 Gnoll 6 Halfling 7 High Elf 8 High Man 9 Klackon 10 Lizardmen 11 Nomad 12 Orc 13 Troll Size: 0 Outpost 1 Hamlet 2 Village 3 Town 4 City 5 Capital Producing: I don't know yet what the exact corresponding objects are. Feel free to experiment... Building Status: Values are: -1 Not Built 0 Replaced 1 Built 2 Destroyed Order of Appearance: 1 Housing (keep at -1!!!!!) 2 Trade Goods (keep at -1!!!!!) 3 Barracks 4 Armory 5 Fighter's Guild 6 Armorer's Guild 7 War College 8 Smithy 9 Stable 10 Animist's Guild 11 Fantastic Stable 12 Shipwright Guild 13 Ship Yard 14 Maritime Guild 15 Sawmill 16 Library 17 Sage's Guild 18 Oracle 19 Alchemist Guild 20 University 21 Wizard's Guild 22 Shrine 23 Temple 24 Parthenon 25 Cathedral 26 Marketplace 27 Bank 28 Merchant's Guild 29 Granary 30 Farmer's Market 31 Forester's Guild 32 Builder's Hall 33 Mechanician's Guild 34 Miner's Guild 35 City Walls City Enchantments: Values are: 0 if not present 1-5: Number of casting wizard + 1 (Yes! This does mean you can put positive enchantments on your cities and have opposing wizards pay their upkeep! Don't expect them to keep on paying though :) Order of Appearance: 1 Wall Of Fire 2 Chaos Rift (!) 3 Dark Rituals 4 Evil Presence (!) 5 Cursed Lands (!) 6 Pestilence (!) 7 Cloud Of Shadow 8 Famine (!) 9 Flying Fortress 10 Nature Ward 11 Sorcery Ward 12 Chaos Ward 13 Life Ward 14 Death Ward 15 Nature's Eye 16 Earth Gate 17 Stream Of Life 18 Gaia's Blessing 19 Inspirations 20 Prosperity 21 Astral Gate 22 Heavenly Light 23 Consecration 24 Wall Of Darkness 25 Altar Of Battle (!) indicates a city curse upon an enemy city. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ That's it for this first edition! Hope it helped someone.... ---------------------------------------------------------------------------- Legal Mumbo-Jumbo: This Document is (C) 1995 ZastaiSoft. It may be freely distributed, as long as no money is charged for it. Exception: Shareware CDs & Small copying fees. I make no guarantees as to the correctness of the above; however I did write my own editor according to these specs and it worked, so it probably comes close. I am not liable for any damages to your hard- or software as a result of using the above info. If someone uses the info in this file to write a savegame editor or the like, I'd appreciate a little thank-you e-mail to the address listed at the top of the file. It would make my day :) ----------------------------------------------------------------------------