Difference between revisions of "Save Game Format (.CHR)"

From WTFwiki
Jump to navigation Jump to search
(Update article to reflect format of other OMF2097 articles.)
Line 1: Line 1:
.CHR files are 'encrypted':
+
The CHR format is required for storing the user's saved game from Tournament mode. It is a XOR encoded file identified by a DWORD having the value 0xafaeadad. The format consists of a number of sections.
  
For bytes 0-0x1C0, XOR with (0xAC + file position).
+
== Encoding ==
Then at position 0xF6 in the file is a BYTE indicating the number of opponents.
+
The encoding is a simple XOR mask + iteration scheme. The first 448 bytes are coded with a XOR mask of 0xac. This covers the [[Save_Game_Format_(.CHR)|Player]] & [[Save_Game_Format_(.CHR)|Tournament]] sections. The [[Save_Game_Format_(.CHR)|Opponents]] section uses a XOR mask determined from the value stored at offset 246. This value contains the the number of opponents of in the Tournament.
The size of the opponents block (sb) = 68 * number of opponents
 
For bytes 0x1C0-0x1C0 + sb, XOR with (file position + sb - 0x1C0)
 
  
Once decrypted, the contents of the files are as described below (from raptor's post here: http://www.omf2097.com/~forum/viewthread.php?tid=14)
+
<code>
 +
int GetOppXOR(int no)
 +
{
 +
       
 +
    return (no - (((no / 256) * 256)));
 +
}
 +
</code>
  
<pre>
+
The [[Save_Game_Format_(.CHR)|Player's photo]] is not XOR encoded.
__________________________________________________________________________
 
Offset Function / Values / Description
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
04 - 13 Pilot Name:
 
  
Stored in standard IBM ASCII
+
== Player ==
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
Starting at offset 4 for the user(with a XOR mask of 0xb0) & offset 448 for the first opponent(with a XOR mask determined with the code above):
16 + 17 Wins:
 
  
Stored in standard byte-swapped-order.
+
{| border="1" style="text-align:center"
MSB = 17, LSB = 16
+
! colspan="15" width="25%"| Description
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
! colspan="15" width="25%"| Size in Bytes
18 + 19 Loses:
+
|-
 +
| colspan="15" bgcolor="#DDDDFF"| Pilot name
 +
| colspan="15"| 16
 +
|-
 +
| colspan="15" bgcolor="#FFDDDD"| Unknown
 +
| colspan="15"| 2
 +
|-
 +
| colspan="15"| Wins
 +
| colspan="15"| 2
 +
|-
 +
| colspan="15"| Loses
 +
| colspan="15"| 2
 +
|-
 +
| colspan="15"| Rank
 +
| colspan="15"| 1
 +
|-
 +
| colspan="15"| HAR
 +
| colspan="15"| 1
 +
|-
 +
| colspan="15"| HAR
 +
| colspan="15"| 1
 +
|-
 +
| colspan="15"| Arm|Blade|Flail Power, Leg Power, Arm|Flame|Blade|Flail Speed
 +
| colspan="15"| 2 (5 bits per attribute)
 +
|-
 +
| colspan="15"| Leg|Flame Speed|Arm Power(Flail), Armour, Stun Resistance
 +
| colspan="15"| 2 (5 bits per attribute)
 +
|-
 +
| colspan="15"| Power & Agility
 +
| colspan="15"| 2 (7 bits per attribute)
 +
|-
 +
| colspan="15"| Endurance
 +
| colspan="15"| 1 (7 bits per attribute)
 +
|-
 +
| colspan="15"| Credits
 +
| colspan="15"| 4
 +
|-
 +
| colspan="15"| Ternary HAR colour
 +
| colspan="15"| 1
 +
|-
 +
| colspan="15"| Secondary HAR colour
 +
| colspan="15"| 1
 +
|-
 +
| colspan="15"| Primary HAR colour
 +
| colspan="15"| 1
 +
|}
  
Stored in standard byte-swapped-order.
+
The HAR is determined from the following table:
MSB = 19, LSB = 18
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
1A Rank:
 
  
Stored as normal HEX value
+
{| border="1" style="text-align:center"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
! colspan="15" width="25%"| HAR
1B Robot Type:
+
! colspan="15" width="25%"| Value
 +
|-
 +
| colspan="15"| Jaguar
 +
| colspan="15"| 0x0
 +
|-
 +
| colspan="15"| Shadow
 +
| colspan="15"| 0x1
 +
|-
 +
| colspan="15"| Thorn
 +
| colspan="15"| 0x2
 +
|-
 +
| colspan="15"| Pyros
 +
| colspan="15"| 0x3
 +
|-
 +
| colspan="15"| Electra
 +
| colspan="15"| 0x4
 +
|-
 +
| colspan="15"| Katana
 +
| colspan="15"| 0x5
 +
|-
 +
| colspan="15"| Shredder
 +
| colspan="15"| 0x6
 +
|-
 +
| colspan="15"| Flail
 +
| colspan="15"| 0x7
 +
|-
 +
| colspan="15"| Gargoyle
 +
| colspan="15"| 0x8
 +
|-
 +
| colspan="15"| Chronos
 +
| colspan="15"| 0x9
 +
|-
 +
| colspan="15"| Nova
 +
| colspan="15"| 0xa
 +
|}
  
Values: 00 = Jaguar 01 = Shadow 02 = Thorn
+
== Tournament ==
03 = Pyros 04 = Electra 05 = Katana
+
This section stores a limited set of details relating to the tournament that the user is competing in.
06 = Shredder 07 = Flail 08 = Gargoyle
+
Starting at offset 47 (XOR mask will be 0xdb) and consuming 56 bytes of data:
09 = Chronos 0A = Nova
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
1C + 1D Arm Power, Leg Power and Arm Speed:
 
  
Offset: 1D 1C
+
{| border="1" style="text-align:center"
Bits: x0000000 00000000 x = unused
+
! Offset (Size in Bytes)
\___/\____/\___/ AS = Arm Speed
+
! colspan="12" width="16%"| 47–59 (12)
AS LP AP LP = Leg Power
+
! colspan="30" width="50%"| 60-90 (30)
AP = Arm Power
+
! colspan="12" width="16%"| 91-103 (12)
 +
|-
 +
!Description
 +
| colspan="12" bgcolor="#DDDDFF"| Tournament file name. MS-DOS 8+3 + '\0'
 +
| colspan="30" bgcolor="#DDDDFF"| Tournament Description. 29 + '\0'.
 +
| colspan="12" bgcolor="#DDDDFF"| Tournament image file name. MS-DOS 8+3 + '\0'
 +
|}
  
Note: 5 Bits needed for each Attribute, expect erratic
+
There is an entire section devoted to the Tournament. It has no been completely de-mystified as yet. Some parts of the section store data on the user's win or lose against un-ranked challengers, and if any HAR enhancement was won.
behaviour if attribute is changed above Level 10
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
1E + 1F Leg Speed, Armor and Stun Res:
 
  
Offset: 1F 1E
+
{| border="1" style="text-align:center
Bits: x0000000 00000000 x = unused
+
! colspan="1" width="5%"| Offset
\___/\____/\___/ SR = Stun Res
+
! colspan="1" width="5%"| Bytes
SR A LS A = Armor
+
! colspan="1" width="25%"| Description
LS = Leg Speed
+
|-
 +
| colspan="1" | 155
 +
| colspan="1" | 1
 +
| colspan="1" | Difficulty Level
 +
|-
 +
| colspan="1" | 246
 +
| colspan="1" | 4
 +
| colspan="1" | Number of opponents, including un-ranked challengers.
 +
|-
 +
| colspan="1" | 248
 +
| colspan="1" | 4
 +
| colspan="1" | Number of opponents, excluding un-ranked challengers.
 +
|}
  
Note: 5 Bits needed for each Attribute, expect erratic
+
Values for the difficulty level
behaviour if attribute is changed above Level 10
+
{| border="1" style="text-align:center
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
! colspan="1" width="5%"| Mode
20 + 21 Power and Agility:
+
! colspan="1" width="5%"| Value
 +
|-
 +
| colspan="1" | Aluminium (Easy)
 +
| colspan="1" | 0x0
 +
|-
 +
| colspan="1" | Iron (Medium)
 +
| colspan="1" | 0x08
 +
|-
 +
| colspan="1" | Steel (Hard)
 +
| colspan="1" | 0x10
 +
|-
 +
| colspan="1" | Heavy Metal
 +
| colspan="1" | 0x18
 +
|}
  
Offset: 21 20
+
== HAR enhancements ==
Bits: xx000000 00000000 x = unused
+
This section occupies 11 consecutive bytes, and for the user is stored from offset 166 to 176. For the [[Save_Game_Format_(.CHR)|Opponents]] the section is stored directly following the format of the [[Save_Game_Format_(.CHR)|Player]] section.
\______/\_____/ PWR = Power
 
PWR AGL AGL = Agility
 
  
Note: 7 Bits needed for each Attribute
+
{| border="1" style="text-align:center"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
! colspan="15" width="25%"| HAR
22 Endurance:
+
! colspan="15" width="25%"| Offset
 +
|-
 +
| colspan="15"| Jaguar
 +
| colspan="15"| +0
 +
|-
 +
| colspan="15"| Shadow
 +
| colspan="15"| +1
 +
|-
 +
| colspan="15"| Thorn
 +
| colspan="15"| +2
 +
|-
 +
| colspan="15"| Pyros
 +
| colspan="15"| +3
 +
|-
 +
| colspan="15"| Electra
 +
| colspan="15"| +4
 +
|-
 +
| colspan="15"| Katana
 +
| colspan="15"| +5
 +
|-
 +
| colspan="15"| Shredder
 +
| colspan="15"| +6
 +
|-
 +
| colspan="15"| Flail
 +
| colspan="15"| +7
 +
|-
 +
| colspan="15"| Gargoyle
 +
| colspan="15"| +8
 +
|-
 +
| colspan="15"| Chronos
 +
| colspan="15"| +9
 +
|-
 +
| colspan="15"| Nova
 +
| colspan="15"| +10
 +
|}
  
Bits: x0000000 x = unused
+
Enhancements follow a 0x0, 0x1, 0x2 for each upgrade. For example a value of 0x2 for the Jaguar would mean all upgrades enabled. This has not fully been evaluated.
\_____/
 
Endurance
 
  
Note: 7 Bits needed for Attribute
+
== Opponents ==
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
28 - 2B Money:
 
  
Stored in standard byte-swapped-order.
+
This section occupies 68 bytes and follows the format of [[Save_Game_Format_(.CHR)|Player]] + [[Save_Game_Format_(.CHR)|HAR enhancements]]. The first opponent will be stored at offset 448. Opponents are stored by Rank, highest to lowest (that is, rank 1 followed by rank 2 ...). Following is the un-ranked or hidden challengers.
MSB = 2B, LSB = 28
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
2C - 2E Robot Color:
 
  
Offset: 2E - Main Body Color
+
== Player's photo ==
2C - Secondary Body Color
 
2D - Third Body Color
 
  
Values: 00 = Light Blueish 08 = Dark Gray
+
Raw 8bit pelleted One Must Fall 2097 image format.
01 = Red 09 = Black
 
02 = Cyan - Greenish 0A = Light Gray
 
03 = Light Magenta 0B = Light Orange
 
04 = Dark Yellow 0C = Dark Orange
 
05 = Dark Blue 0D = Light Yellow
 
06 = Orange 0E = Dark Magenta
 
07 = Light White 0F = Light Cyan
 
10 = Default colors for pilot
 
  
NOTE: Im not sure what happens when you choose values other
+
== Contributors ==
than these, but I think it just assumes the default
 
color for the current pilot.
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
9B Difficulty Level:
 
  
Bits: 00000000 = 00 = Aluminum (Easy)
+
* Alastair Hogge
00001000 = 08 = Iron (Medium)
+
* Carl Manzi
00010000 = 10 = Steel (Hard)
+
* chaosbm (Richard ...)
00011000 = 18 = Heavy Metal
+
* Michael Nicolella  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
* Mighty Wombat  
A6 Jaguar Enhancment:
+
* Ray Kirkland  
 
+
* Todd Copeland
00 - No Enhancement
 
01 - Double Concussion Cannon [ D,B+P ]
 
Air Jaguar Leap [ (Jump) D,F+P ]
 
02 - Triple Concussion Cannon [ D,B+P ]
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
A7 Shadow Enhancement:
 
 
 
00 - No Enhancement
 
01 - Air Shadow Grab [ (Jump) D,B+P ]
 
03 - Ice Freeze [ F,D,B+P ]
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
A8 Thorn Enhancement:
 
 
 
00 - No Enhancement
 
01 - Air Speed Kick [ (Jump) D,F+K ]
 
03 - Air Off-Wall Attack [ (Jump) D,B+K ]
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
A9 Pyros Enhancement:
 
 
 
00 - No Enhancement
 
01 - Air Super Thrust [ (Jump) F,F+P ]
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
AA Electra Enhancement:
 
 
 
00 - No Enhancement
 
01 - Double Ball Lightning [ D,B+P ]
 
Long Range Electric Shards [ D,F+P ]
 
02 - Triple Ball Lightning [ D,B+P ]
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
AB Katana Enhancemnt:
 
 
 
00 - No Enhancement
 
01 - Quadruple Rising Blade [ B,D,F+P ]
 
03 - Quintiple Rising Blade [ B,D,F+P ]
 
Fire Ball [ D,B+P ]
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
AC Shredder Enhancement:
 
 
 
00 - No Enhancement
 
01 - Long Range Flying Hands [ D,B+P ]
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
AD Flail Enhancement:
 
 
 
00 - No Enhancement
 
01 - Moving Slow Swinging Chains [ D,K (while moving) ]
 
02 - Moving Fast Swinging Chains [ D,P (while moving) ]
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
AE Gargoyle Enhancement:
 
 
 
00 - No Enhancement
 
01 - Air Wing Charge [ (jump) F,F+P ]
 
 
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
AF Chronos Enhancement:
 
 
 
Does he have ANY enhancements??
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
B0 Nova Enhancement??
 
 
 
Does he have ANY enhancements??
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
1C0-203 Opponent at Rank 1's Information
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
204-248 Opponent at Rank 2's Information
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
248-28C Opponent at Rank 3's Information
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
... ...
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
Opponent Each Opponent occupies 44h bytes in file, starting at offset
 
Info: 1C0h
 
.
 
. The offsets that follow are relative to the starting location
 
. of a single opponent.
 
~~~~.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
00 - 0F Opponent's Name:
 
.
 
. Stored in standard IBM ASCII
 
~~~~.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
12 + 13 Opponent's Wins
 
.
 
. Stored in standard byte-swapped-order.
 
. MSB = 13, LSB = 12
 
~~~~.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
14 + 15 Opponent's Loses
 
.
 
. Stored in standard byte-swapped-order.
 
. MSB = 15, LSB = 14
 
~~~~.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
16 . Opponent's Rank:
 
.
 
. Stored as normal HEX value
 
~~~~.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
17 . Opponent's Robot Type:
 
.
 
. Refer to Player's Robot Type above.
 
~~~~.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
19 + 1A Opponent's Arm Power, Leg Power and Arm Speed:
 
.
 
. Refer to Player's Arm Power, Leg Power and Arm Speed above.
 
~~~~.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
1B + 1C Opponent's Leg Speed, Armor and Stun Res:
 
.
 
. Refer to Player's Leg Speed, Armor and Stun Res above.
 
~~~~.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
1D . 1E Opponent's Power and Agility:
 
.
 
. Refer to Player's Power and Agility above.
 
~~~~.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
1F . Opponent's Endurance:
 
.
 
. Refer to Player's Endurance above.
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
 
 
 
Portions contributed by Michael Nicolella, Mighty Wombat, Carl Manzi
 
Hex editing obtained from Todd Copeland and Ray Kirkland  
 
</pre>
 

Revision as of 23:39, 30 November 2009

The CHR format is required for storing the user's saved game from Tournament mode. It is a XOR encoded file identified by a DWORD having the value 0xafaeadad. The format consists of a number of sections.

Encoding

The encoding is a simple XOR mask + iteration scheme. The first 448 bytes are coded with a XOR mask of 0xac. This covers the Player & Tournament sections. The Opponents section uses a XOR mask determined from the value stored at offset 246. This value contains the the number of opponents of in the Tournament.

int GetOppXOR(int no) 
{
       
   return (no - (((no / 256) * 256)));
}

The Player's photo is not XOR encoded.

Player

Starting at offset 4 for the user(with a XOR mask of 0xb0) & offset 448 for the first opponent(with a XOR mask determined with the code above):

Description Size in Bytes
Pilot name 16
Unknown 2
Wins 2
Loses 2
Rank 1
HAR 1
HAR 1
Arm|Blade|Flail Power, Leg Power, Arm|Flame|Blade|Flail Speed 2 (5 bits per attribute)
Leg|Flame Speed|Arm Power(Flail), Armour, Stun Resistance 2 (5 bits per attribute)
Power & Agility 2 (7 bits per attribute)
Endurance 1 (7 bits per attribute)
Credits 4
Ternary HAR colour 1
Secondary HAR colour 1
Primary HAR colour 1

The HAR is determined from the following table:

HAR Value
Jaguar 0x0
Shadow 0x1
Thorn 0x2
Pyros 0x3
Electra 0x4
Katana 0x5
Shredder 0x6
Flail 0x7
Gargoyle 0x8
Chronos 0x9
Nova 0xa

Tournament

This section stores a limited set of details relating to the tournament that the user is competing in. Starting at offset 47 (XOR mask will be 0xdb) and consuming 56 bytes of data:

Offset (Size in Bytes) 47–59 (12) 60-90 (30) 91-103 (12)
Description Tournament file name. MS-DOS 8+3 + '\0' Tournament Description. 29 + '\0'. Tournament image file name. MS-DOS 8+3 + '\0'

There is an entire section devoted to the Tournament. It has no been completely de-mystified as yet. Some parts of the section store data on the user's win or lose against un-ranked challengers, and if any HAR enhancement was won.

Offset Bytes Description
155 1 Difficulty Level
246 4 Number of opponents, including un-ranked challengers.
248 4 Number of opponents, excluding un-ranked challengers.

Values for the difficulty level

Mode Value
Aluminium (Easy) 0x0
Iron (Medium) 0x08
Steel (Hard) 0x10
Heavy Metal 0x18

HAR enhancements

This section occupies 11 consecutive bytes, and for the user is stored from offset 166 to 176. For the Opponents the section is stored directly following the format of the Player section.

HAR Offset
Jaguar +0
Shadow +1
Thorn +2
Pyros +3
Electra +4
Katana +5
Shredder +6
Flail +7
Gargoyle +8
Chronos +9
Nova +10

Enhancements follow a 0x0, 0x1, 0x2 for each upgrade. For example a value of 0x2 for the Jaguar would mean all upgrades enabled. This has not fully been evaluated.

Opponents

This section occupies 68 bytes and follows the format of Player + HAR enhancements. The first opponent will be stored at offset 448. Opponents are stored by Rank, highest to lowest (that is, rank 1 followed by rank 2 ...). Following is the un-ranked or hidden challengers.

Player's photo

Raw 8bit pelleted One Must Fall 2097 image format.

Contributors

  • Alastair Hogge
  • Carl Manzi
  • chaosbm (Richard ...)
  • Michael Nicolella
  • Mighty Wombat
  • Ray Kirkland
  • Todd Copeland