PDA

View Full Version : Other Hex-editing People Asked For Contact!


The Fifth Horseman
04-01-2005, 08:13 AM
See, I've been working on hacking through the savegame / datafile structure within the Crescent Hawks Revenge game, and at the same time encodine it all into a neat, clean editor for people to use...

Now I am almost done, but there still are some parts of the data I am not sure about... can anybody of you help me there? The parts in italic are my current ideas... please, folk, HELP.

This is what I have so far. File is in the same status as 9 or so months about.
Over the entire Internet there is only a single tutorial concerning savegame and mech edition for Crescent Hawks Revenge, and it does give only the briefest hint of into on the actual mech stats, telling people to "go and find it out themselves". Well, it's about time somebody not only did this but told all the folk out there how to do it.

Note: Altough I use the term "mech" here, the mentioned files and methods apply to the vehicles in the game as well. Yep, they are treated as mechs in all respect, including armor and hardpoints (that's critical slots for you, Battletech purists).

This file assumes that you treat the zero-byte just before the byte with the 'mech type signature as initial byte (00h).

Offsets listed apply to the mech 00 in mechtype.dat, which is Locust. To receive offsets for data of subsequent mechs, just add 96h x number of mech in the string. In mechtype.dat the mechs are listed in order determined by their ID numbers, while in savegame.dat it is determined by mechs present in each lance and the save slot that was used. Please remember that they are listed as hexadecimal, not decimal values, and therefore offset 20 means 32nd byte, offset 95 - 150th byte etc.

All Mech names are stored in the file revenge.exe as plain text data, beginning on the offset 03B056. (BTW: List of pilot names begins just after). You can change them, but it would be better to never exceed the length of the original name. If the desired name is shorter then the one replaced, then replace the obsolete letters with spaces.

The format presented here is used in the file savegame.dat with the mechs in your saved games as well as in mechtype.dat, where the game has all its mech data stored. Each data string contains EXACTLY 150 bytes (96 h), no more no less.

If you want to quickly find a Mech in the mechdata.dat, you can easily do it by applying the following data to the search field of your hex editor: 00[Mech ID][Mech speed walking][optionally Mech speed running] -this is practically a signature unique to each type of a Battlemech.

00 - Looks like this byte is Friend-or-Foe identification, where 00 means "enemy" and 01-"friendly" This is only my guess, though. Another guess might be that it is actually indicator of 'Mech functionality status (00-in repair, 01-functional).

01 - Mech ID number - determines name displayed during the game (explained later)
02 - Speed (Walking)
03 - Number of Jump Jets

04-0B - Current structure (as per Max Structure, below)
0C-16 - Current armor (as per Max Armor, below)

Max Structure
17 - Head
18 - Left Arm
19 - Left Torso
1A - Center Torso
1B - Right Torso
1C - Right Arm
1D - Left Leg
1E - Right Leg

Max Armor
1F - Head
20 - Left Arm
21 - Left Torso
22 - Center Torso
23 - Right Torso
24 - Right Arm
25 - Left Leg
26 - Right Leg
27 - Left Torso rear
28 - Center Torso rear
29 - Right Torso rear

2A-37 Data not deciphered! Seems that this part of the string is comprised mostly of zeros and changes along with the weapon outfit (and if it does not change this part of the data string does not change either). I don't know what it really does nor do I have any real clues on it.
Can be data on weaponry placement, firepower or heat production. Don't know which. Can also be data on non-equipment criticals (Leg and arm servos, maybe? Or engine, gyros and sensors?).

Ammo
Ammo data are recorded on two bytes each. The first byte contains the amount of ammo remaining, whilst the second is always empty.

36-53 Weapon ammo (in rounds), as follows:
38-39 Autocannon/2 ammo
3A-3B Autocannon/5 ammo
3C-3D Autocannon/10 ammo
3E-3F LB 10-X Autocannon ammo
40-41 Gauss Rifle ammo
42-43 Autocannon/20 ammo
44-45 Machine Gun ammo
46-47 LRM-5 ammo
48-49 LRM-10 ammo
4A-4B LRM-15 ammo
4C-4D LRM-20 ammo
4E-4F SRM-2 ammo
50-51 SRM-4 ammo
52-53 SRM-6 ammo

54 - Number of Heat Sinks that are built into the engine. Normally in BT it is mech speed*tonnage/25, rounded down, unless the Mech has less heat sinks then this number. In CHR, however, this value does also never exceed 10.

Note: There is NO place where Mech's total number of Heat Sinks is recorded. It is a sum of the HS built into the engine and those mounted on the hardpoints.

Hardpoints
Each byte represents a single hardpoint. In case if some weapon takes up more then one hardpoint, appropriate number of subsequent slots should be left empty. You should also leave one free hardpoint for each of the Mech's Jump Jets.

55 - Head hardpoint
56-5D - Left Arm hardpoints
5E-69 - Left Torso hardpoints
6A-6B - Center Torso hardpoints
6C-77 - Right Torso hardpoints
78-7F - Right Arm hardpoints
80-81 - Left Leg hardpoints
82-83 - Right Leg hardpoints

84 - Mech tonnage

85 - Zero in all known cases.
86-87 - These bytes are "clean" in case of mechs stored in Mechtype.dat as well as those that have not seen combat.
I think that bytes 85-87 can be responsible for engine/gyro/sensor status. This is probably the only possible place in the file where these data can be recorded. Another option is that they can carry info about the 'Mechs leg servos.

88 - Sprite ID - determines the set of graphics used by the game to draw the Mech, in other words this makes Crusader look like Crusader and not a mobile HQ or a Locust. The game often uses same set of graphics for more then one Mech. List of sprite ID's is on the end of document. Please note that altough the ID's of the Mech and Vehicle sprites might be the same, but there seem to be separate lists for them, so nothing like Mech with vehicle graphics or vice versa does really happen.

89-8A - In mechtype.dat these bytes always have a value of 00 04. In savegame.dat their value can vary, but seems to never exceed 00 04. Don't really know, maybe this represents the unit state or something.

8B - Don't know. AFAIK, zero at all times.

89,8A,8B can be resposible for number of wounds pilot has left. Maybe the data about life support functionality is also recorded there.

Extras
These bytes determine various upgrades installed, for example CASE, BAP, Double Heat Sinks etc. Most of them seems to work as if they were on/off switches, with value of 00 meaning not present and 01 - installed.
8C - Most definitely it sets Listen-Kill missiles.
8D - This one sets the Beagle Active Probe.
8E - Triggers Arrow IV TAG
8F - Enables Improved Accuracy
90 - This byte is responsible for Double Heat Sinks.
91 - Trigger for the CASE.

MechWarrior
92 - This determines the MechWarrior's name. List of Mechwarrior names is at the end of document.
93 - Experience. As follows:
* 00 - Green
* 01 - Regular
* 02 - Veteran
* 03 - Elite

94 - This value determines the MechWarriors allegiance. Can assume following values:
* 00-Crescent Hawks
* 01-Kell Hounds
* 02-Fed. Suns Cav. Sword of Light

95 - For me it looks like identification of unit type or its movement mode. Always depends on unit type:
* 00 - Mech
* 01 - Hovercraft
* 02 - Tank
* 03 - Infantry
* 04 - APC
* 05 - Ammo Carrier
* 06 - Mobile HQ

Hardpoint content list (*'s mean that number of subsequent hardpoints equal to number of *'s must be left empty - or at least it should be...)

* 00 Empty Slot
* 01 Small Laser
* 02 Small Pulse Laser (Not used anywhere in game, but weapon name listing in the revenge.exe indicates its presence here)
* 03 Medium Laser
* 04 Medium Pulse Laser
* 05 Large Laser *
* 06 Large Pulse Laser *
* 07 ER Large Laser *
* 08 PPC **
* 09 ERPPC **
* 0A AC/2
* 0B AC/5 ***
* 0C AC/10 ******
* 0D LB 10-X*****
* 0E Gauss Rifle ***
* 0F AC/20 *********
* 10 Machine Gun
* 11 LRM 5
* 12 LRM 10 **
* 13 LRM 15 ***
* 14 LRM 20 ****
* 15 SRM 2
* 16 SRM 4
* 17 SRM 6 *
* 18 Heat Sink

List of Mech and vechicle ID's (the IS Mechs with + and * after the name are upgraded to Level 2 tech):
* 00 LOCUST*
* 01 WASP
* 02 STINGER
* 03 COMMANDO
* 04 JAVELIN
* 05 SPIDER*
* 06 URBANMECH*
* 07 VALKYRIE
* 08 FIRESTARTER
* 09 JENNER*
* 0A OSTSCOUT
* 0B PANTHER
* 0C ASSASSIN
* 0D CICADA
* 0E CLINT
* 0F HERMES II
* 10 VULCAN*
* 11 WHITWORTH*
* 12 BLACKJACK*
* 13 HATCHETMAN
* 14 PHOENIX HAWK*
* 15 VINDICATOR
* 16 CENTURION*
* 17 ENFORCER
* 18 HUNCHBACK*
* 19 TREBUCHET*
* 1A DERVISH
* 1B GRIFFIN
* 1C SHADOW HAWK
* 1D SCORPION
* 1E WOLVERINE
* 1F DRAGON
* 20 OSTROC
* 21 OSTOL
* 22 QUICKDRAW
* 23 RIFLEMAN
* 24 CATAPULT
* 25 CRUSADER
* 26 JAGERMECH
* 27 THUNDER BOLT
* 28 ARCHER
* 29 GRASSHOPPER
* 2A WARHAMMER
* 2B MARAUDER
* 2C ORION
* 2D AWESOME
* 2E CHARGER
* 2F GOLIATH
* 30 VICTOR
* 31 ZEUS
* 32 BATTLEMASTER
* 33 STALKER
* 34 CYCLOPS
* 35 BANSHEE
* 36 ATLAS
* 37 ROMMEL TANK
* 38 PEGASUS
* 39 DRILLSON
* 3A MOBILE HQ
* 3B APC
* 3C AMMO CARRIER
* 3D GALLEON
* 3E SKULKER
* 3F INFANTRY
* 40 JUMP INFANTRY
* 41 ELEMENTALS
* 42 PUMA
* 43 BLACKHAWK
* 44 MAD CAT
* 45 LOCUST+
* 46 LOCUST*
* 47 WASP+
* 48 WASP*
* 49 COMMANDO+
* 4A COMMANDO*
* 4B BLACKJACK+
* 4C PHOENIX HAWK+
* 4D PHOENIX HAWK*
* 4E GRIFFIN+
* 4F GRIFFIN*
* 50 RIFLEMAN+
* 51 RIFLEMAN*
* 52 WARHAMMER+
* 53 WARHAMMER*
* 54 MARAUDER+
* 55 JENNER+
* 56 DRAGON+
* 57 SHADOW HAWK+
* 58 BATTLEMASTER+

List of MechWarrior names:
* 00 Youngblood
* 01 Pearce
* 02 Graham
* 03 Anderson
* 04 Reilly
* 05 Casey
* 06 Corrigan
* 07 Hall
* 08 Hunter
* 09 Barth
* 0A Tatum
* 0B Ledesma
* 0C Bellamy
* 0D Latham
* 0E Louie
* 0F Christman
* 10 Townsend
* 11 Stewart
* 12 Bouy
* 13 Hill
* 14 Accardi
* 15 Briggs
* 16 Lebling
* 17 Galley
* 18 Blank
* 19 Meretzky
* 1A Moriarty
* 1B O'Neill
* 1C Berlyn
* 1D Kirsch
* 1E Berez
* 1F Dornbrook
* 20 Montague
* 21 Sgt. Krall
* 22 Youngblood
* 23 Anderson
* 24 Pearce
* 25 Romero
* 26 Carpenter
* 27 Cronenberg
* 28 DePalma
* 29 Dante
* 2A Raimi
* 2B Hooper
* 2C Cunningham
* 2D Chiun
* 2E Toranaga
* 2F Yamashita
* 30 Ichi
* 31 Hosaka
* 32 Higa
* 33 Sanjuro
* 34 Takagi
* 35 Jackson
* 36 Lewis
* 37 Wylie
* 38 Morton
* 39 Vandenburg
* 3A Trainee
* 3B Jason
* 3C Rex
* 3D Kurt
* 3E "Grease"

Sprite ID's:
Mechs:
00 COMMANDO, FIRESTARTER, SPIDER, STINGER, VALKYRIE, WASP
10 CICADA, JAVELIN, JENNER, LOCUST, OSTSCOUT
20 BLACKJACK, HATCHETMAN, HERMES II, WHITWORTH*
30 ARCHER, CRUSADER, GRASSHOPPER, JAGERMECH, ORION, THUNDER BOLT, WARHAMMER
40 DRAGON, OSTOL, OSTROC, QUICKDRAW, RIFLEMAN, URBANMECH*
50 CENTURION, ENFORCER, HUNCHBACK, PHOENIX HAWK, TREBUCHET, VINDICATOR
60 DERVISH, GRIFFIN, SCORPION, SHADOW HAWK, WOLVERINE
70 PUMA
80 BLACKHAWK
90 MAD CAT
A0 ASSASSIN, CATAPULT, CLINT, MARAUDER, PANTHER, STALKER, VULCAN*
B0 ATLAS, AWESOME, BANSHEE, BATTLEMASTER, CHARGER, CYCLOPS, GOLIATH, VICTOR, ZEUS
Vehicles:
50* MOBILE HQ
70* ROMMEL TANK
80* DRILLSON,* PEGASUS
90* GALLEON,* SKULKER
B0* APC
D0* AMMO CARRIER
Infantry:
D6* ELEMENTALS
D8* INFANTRY,* JUMP INFANTRY

List of advanced Inner Sphere Mechs and their equipment:
Key:
LRM/SRM - Long Range Missile / Short Range Missile
LPL/MPL/SPL - Large Pulse Laser / Medium Pulse Laser / Small Pulse Laser
ERLL - Extended Range Large Laser
ML/SL/LL - Medium Laser / Small Laser / Large Laser
PPC - Particle Projection Cannon
ERPPC - Extended Range Particle Projection Cannon
MG - Machine Gun
AC - Autocannon
LB - LB-X "Shotgun" Autocannon
Gauss - Gauss Rifle
DHS - Double Heat Sinks
BAP - Beagle Active Probe
() - Cellular Ammunition Storage Equipment

Crescent Hawk's Revenge Advanced Inner Sphere Mechs
---------------------------------------------------
20 Tons: Locust* : Undocumented [Guess: 2LRM5, same as 3050 LCT-3D]
* * * * Locust+ : Undocumented [Guess: ML 4SL]
* * * * Wasp* : 2SL MPL
* * * * Wasp+ : MPL SRM2 () [Same as 3050 WSP-3M]
25 Tons: Commando* : 2SL SRM6 BAP
* * * * Commando+ : 2ML SRM6 ()
35 Tons: Jenner+ : 4ML SRM4 () [Same as 3050 JR7-K]
45 Tons: Blackjack+ : 2ERLL 2SRM4 ()
* * * * Phoenix Hawk* : 2MPL 2ERLL MG BAP ()
* * * * Phoenix Hawk+ : 2MPL 2ERLL DHS [Same as 3050 PXH-3K]
55 Tons: Griffin* : SL LPL LRM20 DHS
* * * * Griffin+ : SL ERPPC LRM20 () DHS [Same as 3050 GRF-3M]
* * * * Shadow Hawk+ : 3ML LB10X LRM20 SRM2 () DHS
60 Tons: Dragon+ : 3ML ERPPC LRM10 () DHS
* * * * Rifleman* : 2ML 2LL 2ERPPC DHS [Same as 3050 RFL-5D]
* * * * Rifleman+ : 2ML 2LL 2AC10 () DHS
70 Tons: Warhammer* : 2MPL 2ERPPC SRM4 () DHS
* * * * Warhammer+ : 2MPL 2ERPPC SRM6 DHS
75 Tons: Marauder+ : 2MPL 2ERPPC Gauss () DHS [Same as 3050 MAD-5S]
85 Tons: Battlemaster+ : 6ML ERPPC BAP SRM6()
The Locust* and Locust+ only appear in the Pacifica Training Ground Simulator that you get access to once you've completed the game.


Credits:
All number-crunching done by The Fifth Horseman (the_fifth_horseman@interia.pl).
Mech list entries 0A-0F by The Fifth Horseman.
Kudos to the author of the original article for list of Mech ID's and stats on advanced Inner Sphere Mechs.