Talk:DO/ARM
From Dark Omen Wiki
Line 9: | Line 9: | ||
About the savegame "junk"-block after the regiments: | About the savegame "junk"-block after the regiments: | ||
- | Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | + | Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F |
- | + | ||
- | 00003CA0 01 00 00 00 00 00 00 00 E6 00 00 00 EB 00 00 00 ........æ...ë... | + | 00003CA0 01 00 00 00 00 00 00 00 E6 00 00 00 EB 00 00 00 ........æ...ë... |
- | 00003CB0 5B 53 50 52 49 54 45 53 5D 5C 6D 5F 69 6D 70 63 [SPRITES]\m_impc | + | 00003CB0 5B 53 50 52 49 54 45 53 5D 5C 6D 5F 69 6D 70 63 [SPRITES]\m_impc |
- | 00003CC0 61 31 2E 73 70 72 00 00 00 00 00 00 00 00 00 00 a1.spr.......... | + | 00003CC0 61 31 2E 73 70 72 00 00 00 00 00 00 00 00 00 00 a1.spr.......... |
In the first line are 4 integers: | In the first line are 4 integers: | ||
Line 35: | Line 35: | ||
And they are signed btw. But I guess we asume most of the things wrong with unsigned ;) --[[User:Ghabry|Ghabry]] 01:06, 20 February 2010 (UTC) | And they are signed btw. But I guess we asume most of the things wrong with unsigned ;) --[[User:Ghabry|Ghabry]] 01:06, 20 February 2010 (UTC) | ||
+ | |||
+ | :Ghabry, really good work! Will you update the main article with this when you're done researching? This will go into the parsers immediately after that! :) [[User:Mikademus|Mikademus]] 18:47, 20 February 2010 (UTC) | ||
+ | |||
== Unit Type Bitfield == | == Unit Type Bitfield == |
Revision as of 18:47, 20 February 2010
Contents |
Working on Savegame Header
Just want to announce that I will work today on the savegame header ;)
Not related to savegame but normal header:
I found out what the unknown FB 00 means. It's for the status screen after the battle. For the "You collected X Coins from Treasures". The X is defined by this. Ok the FB doesnt really make sense (251) but when this value is different to 0 the treasure-message is displayed --Ghabry 13:52, 20 February 2010 (UTC)
About the savegame "junk"-block after the regiments:
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00003CA0 01 00 00 00 00 00 00 00 E6 00 00 00 EB 00 00 00 ........æ...ë... 00003CB0 5B 53 50 52 49 54 45 53 5D 5C 6D 5F 69 6D 70 63 [SPRITES]\m_impc 00003CC0 61 31 2E 73 70 72 00 00 00 00 00 00 00 00 00 00 a1.spr..........
In the first line are 4 integers:
- 1st: Animation is displayed
- 2nd: padding?
- 3rd: X-Coordinate of Animation
- 4th: Y-Coordinate of Animation
So this defines what for animated things are on the current meeting point. --Ghabry 14:15, 20 February 2010 (UTC)
Regiment Savegame Stuff
Head X and Z Position is wrong. This 4 Byte are used for savegame related things (for the summary displayed after battles)
The 8 byte are (16 bit per value):
- Dead units in last battle
- Unknown
- Killed units in last battle
- Experience gotten for last battle
And they are signed btw. But I guess we asume most of the things wrong with unsigned ;) --Ghabry 01:06, 20 February 2010 (UTC)
- Ghabry, really good work! Will you update the main article with this when you're done researching? This will go into the parsers immediately after that! :) Mikademus 18:47, 20 February 2010 (UTC)
Unit Type Bitfield
Thx to ctl opcode #BA Rob found out that the unit type is actually a bitfield where the first 3 bits determine the race, the others are for the type:
Unused in ()
???: (00000 000 Human) (00000 001 Wood Elf) (00000 010 Dwarf) (00000 011 Night Goblin) (00000 100 Orc) (00000 101 Undead) (00000 110 Townsfolk) (00000 111 Ogre)
Infantry: 00001 000 Human 00001 001 Wood Elf 00001 010 Dwarf 00001 011 Night Goblin 00001 100 Orc 00001 101 Undead 00001 110 Townsfolk 00001 111 Ogre
Cavalry: 00010 000 Human (00010 001 Wood Elf) (00010 010 Dwarf) (00010 011 Night Goblin) 00010 100 Orc 00010 101 Undead (00010 110 Townsfolk) (00010 111 Ogre)
Archer: 00011 000 Human 00011 001 Wood Elf (00011 010 Dwarf) 00011 011 Night Goblin 00011 100 Orc 00011 101 Undead (00011 110 Townsfolk) (00011 111 Ogre)
Artillery: 00100 000 Human (00100 001 Wood Elf) (00100 010 Dwarf) (00100 011 Night Goblin) 00100 100 Orc 00100 101 Undead (00100 110 Townsfolk) (00100 111 Ogres)
Wizard: 00101 000 Human (00101 001 Wood Elf) (00101 010 Dwarf) 00101 011 Night Goblin 00101 100 Orc 00101 101 Undead (00101 110 Townsfolk) (00101 111 Ogres)
Monster: (00110 000 Human) (00110 001 Wood Elf) (00110 010 Dwarf) (00110 011 Night Goblin) (00110 100 Orc) 00110 101 Undead (Dread King) (00110 110 Townsfolk) 00110 111 Ogres (Treeman)
Chariot: (00111 000 Human) (00111 001 Wood Elf) (00111 010 Dwarf) (00111 011 Night Goblin) (00111 100 Orc) 00111 101 Undead (00111 110 Townsfolk) (00111 111 Ogres)
Misc: (01000 000 Human) (01000 001 Wood Elf) (01000 010 Dwarf) 01000 011 Night Goblin (Fanatics) (01000 100 Orc) (01000 101 Undead) (01000 110 Townsfolk) 01000 111 Ogres (Playstation)
- That's a fantastic find! I'll try to find a way to integrate this into the main article! Mikademus 21:25, 29 December 2009 (UTC)
DOC ARM File Explanation
Original ARM file info, taken from DOC111. It is older than Smurf and Mikademus' DOC project, though.
***EDITING IN DARKOMEN*** What's in the file : Editing unit stats. Editing gold and magic items in the savegame files. Editing gold amount that can construct multiplayer armies with (eg 9000). NOTE : you need a hexeditor (or you can use debug if proficient with it) to make use of all this info. Not to be used unscrupulously! If there's anything else I'm missing that's important then ask and thou may receiveth. ********************************************************************************** * Location of unit stats in savegame files. savegame files at x:\darkomen\savegame\ * Location of multiplayer unit files = X:\darkomen\gamedata\2parm\ hu_allmp.aud for human armies. gs_allmp.aud for greenskin armies. ud_allmp.aud for undead armies. (Note, in savegames the format is the same except there's some extra values used which aren't important) ---- after byte "DC 84" the first unit starts EXAMPLE : AA AA 00 00 BB 00 00 00 CC DD EE EE FF 00 00 00 GG GG GG GG HH 00 un un un un un un un un un un un un un un un un un un un un un un un un un un un un un 00 00 00 II 00 JJ KK KK KK 00 00 00 00 S1 S1 S1 S1 S1 S1 S1 S1 S1 LL LL LL LL LL LL 00 00 MM 00 00 NN 00 hn hn hn hn hn hn hn hn hn hn hn hn hn hn hn hn hn hn hn hn hn 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 S2 S2 S2 S2 S2 S2 S2 S2 S2 00 PP PP 00 00 PP 00 00 QQ 00 RR 00 ?1 00 ?2 00 ?3 00 ?4 00 SS SS TT UU FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 ?6 00 ?7 VV 00 00 00 BYTE MEANINGS : AA AA = 11 00 = unit with you. 10 00 = don't have unit... BB = meaningless I think. CC = Mage number? (see below). DD = Number of armour shield slots. EE EE = Unit cost (see below). FF = Banner. GG GG GG GG = Psycholgy/Special abilities (see below). HH = Unit sprite. un = Unit name (can't be seen on opponent's computer in battle only yours) II = Unit name. JJ = 00 if good, 80 if eveil, 40 if neutral (eg traders). KK KK KK = Number of men in unit total/Number of men in unit alive/Number of Ranks. S1 = Stats of men/crew (see below). LL = see below. MM = 02 or FF, ?? (probably not important). NN = Hero sprite. hn = hero name (don't bother with this). S2 = Stats of leader/artillery (see below). PP = leader's armour/leader's weap/leader's(or artillery) missile. QQ = 00 or FF ?? (probably not important). RR = 3d head of leader. ?1, ?2... = used in singleplay for unit positioning/aren't important. SS SS = Experience. TT = Unit number in book for duplicates. eg 1st Dwarves have 01, 2nd Dwarves have 02... UU = Number of gold (initial and unsellable) shields. 18 FF's = mage book/magic item slots (see below). VV = Profile in book. (banner/leaderhead/picture) ************************************************************************************** CC : (Mage number ?) 2 = Necromancer, Night Goblin Shaman(multi), Orc Shaman(multi), Night Goblin Champion Shaman 3 = Orc Champion Shaman 4 = Vamp lord, Master Necromancer, Orc Master Shaman 5 = Necromancer Lord, Mannfred von Carstein, Hand Of Nagash, Dread King, Orc Shaman Lord Note - Seems to have no effect at all. Most mages in multi have 2 regardless of level. - But is necessary for unit to cast spells. This and a mage book. Unit Cost : 01 00 = 3 (1 * 3) 10 00 = 48 (10 h or 16 * 3) 00 01 = 768 (100 h or 256 * 3) 00 10 = 12288 (1000 h or 4096 * 3) Psychology/Special abilities : -Only sure on some of these. Just check values of the real units. -Used for Hate Greenskins, Hate dwarves, Cause fear, Fear elves, Never break/Immune to psych, Maybe Double wounds from fire, 360 degree vision, Ignore terrain, Magic resistance, Cannot be engaged and others. Statistics : 1st = Movement, 2nd = Weapon skill, 3rd = Ballistic skill, 4th = Strength, 5th = Toughness, 6th = Wounds, 7th = Initiative, 8th = Attacks, 9th = Leadership. Note - normal values from 0 - A (10). LL : 1st byte - 00 if not cavalry, 01 if have horse mount. 02 if boar. 2nd byte - Armour type (see below). 3rd byte - Weapon type (see below). 4th byte - Unit type (see below). 5th byte - PntVal (not really important I think...use value from similar unit) 6th byte - Missile weapon (see below). Note : hero only needs armour, weapon and missile. Armour : 00 = No shields. 01 = 1 shield. 02 = 2 shields. 03 = 3 shields. 04 = 4 shields. 06 = 3 shields and Regenerate. 07 = 2 shields and ??? (Treeman's 'armour') 08 = Wraith's 'armour' with no shields (Normal weapon immunity I believe) 11 = 2 shields. 12 = 3 shields. 13 = 4 shields. 15 = 5 shields. Note - the 11 to 15 are only used for mounted units. Weapons : 00 = Hands/Claws (nothing special I think) 01 = Sword (nothing special) 02 = Two handed sword (+2 S, strike last) 03 = Halberd or Spear (probably + 1 S) 04 = Flail (+2 S first round) 05 = Wight blade (does 1-3 wounds, magical) Unit type : -affects horse or arrows pic in top right corner of profile -affects replacement cost for a man and armour increase. -affects special rules for unit on battlefield. Human Infantry = 08 Wood Elf infantry = 09 Dwarf Infantry = 0A Night Goblins = 0B All undead on foot = 0D Ogres = 0F Human Cavalry = 10 Skeleton horsemen/Black grail = 15 Mercenary Crossbowmen = 18 Wood Elf Archers = 19 Night Goblin Archers = 1B Skeleton archers = 1D Human artillery = 20 Skull catapult = 25 Human Wizards = 28 Undead wizards = 2D Dread King = 35 Monsters = 37 Undead Chariot/Hand of Nagash = 3D Note - Chariot has some unpredicatable effects including : Cause crash when click on many parts of chariot unit icons in book, don't click on it at all! ; replacements cost is screwed ; Doesn't auto-deploy ; crash when give items sometimes or just when buy item and try to give to someone else ; can be used in battle though. - Unit type normally affects the sound they make when for example they CHARGE! Missile weapons : 07 = Short Bow (tiny range...about same as pistol!) 08 = Normal Bow (average range) 09 = Elven bow (great range, more than crossbow I think) 0A = Crossbow 0B = Pistol 0C = Cannon 0D = Mortar 0E = Steam tank cannon (shorter range) 0F = Rock lobber 10 = Ballista 11 = Screaming skulls Note: -giving missile ability to a unit requires that they have an 'archer' unit type ; and a missile weapon. But remember, most units that aren't units wouldn't have a 'shooting frame' for the sprite and so the game may crash...or you might see their death frame instead when shooting! Unit Level and Skulls : 70 17 = lev 4 (1770h = 6000 xp) B8 0B = lev 3 (0BB8h = 3000 xp) E8 03 = lev 2 (03E8h = 1000 xp) 00 00 = lev 1 (0000h = 0000 xp) Magic item/Mage Book slots : 1st 2 bytes determine which spells mage has. 1600 = Bright Book 1700 = Ice Book 1800 = Waaagh Book 1900 = Dark Book or any of the "FF FF" bytes can have the following for magic items. 0100 = Grudgebringer 0200 = Skabskrath 0300 = Runefang 0400 = Hellfire 0500 = Storm Sword 0600 = Lightning Bolt - don't use this one as causes crashes. 0700 = Spelleater Shield 0800 = Dragon Helm 0900 = Shield of Ptolos 0A00 = Enchanted Shield 0B00 = Heart of Woe 0C00 = Potion of Strength 0D00 = Horn of Urgok 0E00 = Ring of Volans - can be selected but won't perform any action. 0F00 = Banner of Arcane Warding 1000 = Banner of Wrath 1100 = Banner of Defiance 1200 = Mork's War Banner 1300 = Staff of Osiris 1400 = Wand of Jet 1500 = Book of Ashur Note - A unit needs a book number and the mage number to cast spells. Mage unit type isn't necessary like for shooting missiles. And sprite errors will also NOT occur if the unit doesn't have a spellcasting anim. The guy just doesn't move :) Pretty sure of this...well at least for some sprites. - Don't put a spell book it the other item slots (afters the first one) otherwise a crash will more thatn likely occur when selecting the 'book' item. ********************************************************************************** GOLD LOCATION IN SAVEGAME FILES : offset : 00028C to 00028D (2 bytes) MAGIC ITEMS LOCATION IN SAVEGAME FILES : offset : offset : 00028E to 0002XX (1 byte each) *********************************************************************************** To change gold amount that you can construct multiplayer armies with : In engrel.exe. offset 0043FC - D for 9000 pts selection = normally 28 23 offset 00440C - D for 7000 pts selection = normally 58 1B offset 00441C - D for 5000 pts selection = normally 88 13 offset 00442C - D for 3000 pts selection = normally B8 0B *********************************************************************************** Compiled by Thorgrim (thorgrim@iinet.net.au)