FF7/Battle and growth data
Contents
Kernel.bin section 3
This file contains a bunch of information about character growth and battles. Table below explains it all (credits go to Terence F. for this).
General data layout
Offset | Length | Description |
---|---|---|
0x0000 | 56 bytes | Character data: Cloud (see below) |
0x0038 | 56 bytes | Character data: Barret |
0x0070 | 56 bytes | Character data: Tifa |
0x00A8 | 56 bytes | Character data: Aeris |
0x00E0 | 56 bytes | Character data: Red XIII |
0x0118 | 56 bytes | Character data: Yuffie |
0x0150 | 56 bytes | Character data: Cait Sith |
0x0188 | 56 bytes | Character data: Vincent |
0x01C0 | 56 bytes | Character data: Cid |
0x01F8 | 12 x 1 byte | Random bonus to primary stats |
0x0204 | 12 x 1 byte | Random bonus % to HP |
0x0210 | 12 x 1 byte | Random bonus % to MP |
0x021C | 37 x 16 bytes | Primary stat curve 0 - 36 (see below) |
0x046C | 9 x 16 bytes | HP stat curve 37 - 45 (Base * 40) |
0x04FC | 9 x 16 bytes | MP stat curve 46 - 54 (Base * 2) |
0x058C | 9 x 16 bytes | EXP stat curve 55 - 63 (Gradient is quadratic, no Base) |
0x61C | 1508 bytes | Character AI data (see below) |
0xC00 | 540 bytes | FF padding |
0xE1C | 256 bytes | Random number look-up table (all numbers from 0-256 are here) |
0xF1C | 64 bytes | Scene.bin look-up table (see below) |
0xF5C | 56 bytes | Spell order from Magic menu in battles (see below) |
Character data record
Offset | Length | Function |
---|---|---|
0x00 | 1 byte | Strength Level-Up Curve |
0x01 | 1 byte | Vitality Level-Up Curve |
0x02 | 1 byte | Magic Level-Up Curve |
0x03 | 1 byte | Spirit Level-Up Curve |
0x04 | 1 byte | Dexterity Level-Up Curve |
0x05 | 1 byte | Luck Level-Up Curve |
0x06 | 1 byte | HP Level-Up Curve |
0x07 | 1 byte | MP Level-Up Curve |
0x09 | 47 bytes | -Placeholder- |
Stat curve record
- Placeholder -
Character AI data
- Placeholder -
Scene.bin Look-up file
As you may know, scene.bin file is divided into banks or sections. There are 33 total sections, and each one is 8192 long. Each section contains 5 - 20 files, based on their length. If archive is modified and one of the files is bigger than before, it must be put in the next section, which'll probably cause last file in this section to be put in next one, etc. This look-up table contains data about how many files are in each section. It begins like this:
00 0C 12 19 21 27 2D ...
Which means:
Section 1 contains 0x0C - 0x00 = 12 files Section 2 contains 0x12 - 0x0C = 6 files Section 3 contains 0x19 - 0x12 = 7 files ... and so on.
Everytime you modify scene.bin file, you must also keep this table updated, or you'll end with VERY random encounters (wrong battles in wrong places). You can use SceneFix program, which'll update the table for you.
Magic Order
This segment of data tells the game in what order to load the attacks into which Magic section. There are four Magic sections: Restore, Attack, Indirect, and Special. The first three can be reorganized in the battle's magic menu. When the first 56 attacks are loaded, these bytes tell the game which section and what order to be loaded in:
AAA:BBBBB AAA - Section BBBBB - Index within section of attack loaded
The Magic menu will only display sections 0 - 3 (Summons are section 4, E.Skills are section 5, etc.). The sections are then displayed sequentially in the field magic menu and in the order specified in the battle menu.
Eg: The fourth attack in Attack data is Regen. The fourth byte in this data segment is 08. This means load Regen into section 0 at position 8.
NOTES:
- If a value is repeated, that attack will override the previous listing.
- The final two bytes are NULL (0xFF) so the game moves the Attack pointer ahead to load the summon attacks.