Warlords: Battlecry ARM: Difference between revisions
Jump to navigation
Jump to search
imported>Ikskoks |
imported>Ikskoks |
||
| Line 20: | Line 20: | ||
// 2= Boat | // 2= Boat | ||
// 3= Floater (crosses water) | // 3= Floater (crosses water) | ||
20 bytes (char) - unit name // e.g. "Peasant" or "Human Hero" | 20 bytes (char) - unit name // e.g. "Peasant" or "Human Hero" | ||
2 bytes (uint16) - unknown | 2 bytes (uint16) - unknown | ||
2 bytes (uint16) - unit production time (in seconds) | |||
2 bytes (uint16) - combat | |||
2 bytes (uint16) - speed | |||
2 bytes (uint16) - resistance | |||
2 bytes (uint16) - HP | |||
2 bytes (uint16) - View | |||
2 bytes (uint16) - Armor | |||
2 bytes (uint16) - Strong vs. // 0= Piercing | |||
// 1= Frost | |||
// 2= Electric | |||
// 3= Fire | |||
// 4= Magic | |||
// 5= Crushing | |||
// 6= Slashing | |||
// 7= All Psychical | |||
// 8= Piercing and Slashing | |||
// 9= All Elemental | |||
// 10= All damage | |||
// E= Fire | |||
// FFFF= none | |||
2 bytes (uint16) - Weak vs. // as above | |||
x bytes - other unit data //TODO | |||
</pre> | </pre> | ||
</div> | </div> | ||
Revision as of 14:33, 18 December 2020
ARM
- Game : Warlords: Battlecry
- Format Type : Misc
- Endian Order : Little Endian
Format Specifications
// Warlords: Battlecry
// ARM file format
// little endian
4 bytes (char) - unit ID // "ATHX", "AHHX", "AHBX" etc.
1 byte (uint8) - reserved // always "1"
1 byte (uint8) - unit movement type // 0= Grounded
// 1= Flyer
// 2= Boat
// 3= Floater (crosses water)
20 bytes (char) - unit name // e.g. "Peasant" or "Human Hero"
2 bytes (uint16) - unknown
2 bytes (uint16) - unit production time (in seconds)
2 bytes (uint16) - combat
2 bytes (uint16) - speed
2 bytes (uint16) - resistance
2 bytes (uint16) - HP
2 bytes (uint16) - View
2 bytes (uint16) - Armor
2 bytes (uint16) - Strong vs. // 0= Piercing
// 1= Frost
// 2= Electric
// 3= Fire
// 4= Magic
// 5= Crushing
// 6= Slashing
// 7= All Psychical
// 8= Piercing and Slashing
// 9= All Elemental
// 10= All damage
// E= Fire
// FFFF= none
2 bytes (uint16) - Weak vs. // as above
x bytes - other unit data //TODO
MultiEx BMS Script
Not written yet.
Notes and Comments
- ARM files are encrypted with custom algorithm. Special 256-bytes key is needed for decryption. Key starts with string "mr8".
Decryption algorithm
Below is Python implementation of decryption algorithm:
arm_size = os.path.getsize(in_file_path)
for i in range(arm_size):
arm_byte = struct.unpack("B", arm_file.read(1))[0]
key_file.seek(arm_byte)
out_byte = key_file.read(1)
out_file.write(out_byte)
Compatible Programs