Difference between revisions of "FF7/Savemap"
Jump to navigation
Jump to search
Qhimm>Halkun |
Qhimm>Synergy Blades |
||
Line 1: | Line 1: | ||
=== The Savemap === | === The Savemap === | ||
The following is the general save format for the game. This data excludes the header data that differs between the PSX and PC version. | |||
Table 1: FF7 Save Slot | |||
Coming soon | |||
Table 2: Character record | |||
{| border="0" cellspacing="1" cellpadding="3" style="background: rgb(0,0,0)" align="center" | |||
! style="background:rgb(204,204,204)" align="center" | Offset | |||
! style="background:rgb(204,204,204)" align="center" | Length | |||
! style="background:rgb(204,204,204)" align="center" | Description | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x00 | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Sephiroth flag for changing Vincent into Sephiroth | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x01 | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Level (0-99) | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x02 | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Strength (0-255) | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x03 | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Vitality (0-255) | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x04 | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Magic (0-255) | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x05 | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Spirit (0-255) | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x06 | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Dexterity (0-255) | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x07 | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Luck (0-255) | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x08 | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Strength Bonus (Power Sources used) | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x09 | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Vitality Bonus (Guard Sources used) | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x0A | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Magic Bonus (Magic Sources used) | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x0B | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Spirit Bonus (Mind Sources used) | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x0C | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Dexterity Bonus (Speed Sources used) | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x0D | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Luck Bonus (Luck Sources used) | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x0E | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Current limit level (1-4) | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x0F | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Current limit bar (0xFF = limit break) | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x10 | |||
|style="background:rgb(255,255,255)" | 12 bytes | |||
|style="background:rgb(255,255,255)" | Name ([[FF Text|FF Text]] format) | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x1C | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Equipped weapon | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x1D | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Equipped armor | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x1E | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Equipped accessory | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x1F | |||
|style="background:rgb(255,255,255)" | 3 bytes | |||
|style="background:rgb(255,255,255)" | Character flags | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x22 | |||
|style="background:rgb(255,255,255)" | 2 bytes | |||
|style="background:rgb(255,255,255)" | Learned limit skills | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x24 | |||
|style="background:rgb(255,255,255)" | 2 bytes | |||
|style="background:rgb(255,255,255)" | Number of kills | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x26 | |||
|style="background:rgb(255,255,255)" | 2 bytes | |||
|style="background:rgb(255,255,255)" | Times limit 1-1 has been used | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x28 | |||
|style="background:rgb(255,255,255)" | 2 bytes | |||
|style="background:rgb(255,255,255)" | Times limit 2-1 has been used | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x2A | |||
|style="background:rgb(255,255,255)" | 2 bytes | |||
|style="background:rgb(255,255,255)" | Times limit 3-1 has been used | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x2C | |||
|style="background:rgb(255,255,255)" | 2 bytes | |||
|style="background:rgb(255,255,255)" | Current HP | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x2E | |||
|style="background:rgb(255,255,255)" | 2 bytes | |||
|style="background:rgb(255,255,255)" | Base HP (before materia alterations) | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x30 | |||
|style="background:rgb(255,255,255)" | 2 bytes | |||
|style="background:rgb(255,255,255)" | Current MP | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x32 | |||
|style="background:rgb(255,255,255)" | 2 bytes | |||
|style="background:rgb(255,255,255)" | Base MP (before materia alterations) | |||
|- | |||
|style="background:rgb(255,255,204)" | 0x34 | |||
|style="background:rgb(255,255,204)" | 4 bytes | |||
|style="background:rgb(255,255,204)" | Unknown | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x38 | |||
|style="background:rgb(255,255,255)" | 2 bytes | |||
|style="background:rgb(255,255,255)" | Maximum HP (after materia alterations) | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x3A | |||
|style="background:rgb(255,255,255)" | 2 bytes | |||
|style="background:rgb(255,255,255)" | Maximum MP (after materia alterations) | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x3C | |||
|style="background:rgb(255,255,255)" | 4 bytes | |||
|style="background:rgb(255,255,255)" | Current EXP | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x40 | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Weapon materia slot number 1 | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x41 | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Weapon materia slot number 2 | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x42 | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Weapon materia slot number 3 | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x43 | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Weapon materia slot number 4 | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x44 | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Weapon materia slot number 5 | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x45 | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Weapon materia slot number 6 | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x46 | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Weapon materia slot number 7 | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x47 | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Weapon materia slot number 8 | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x48 | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Armor materia slot number 1 | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x49 | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Armor materia slot number 2 | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x4A | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Armor materia slot number 3 | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x4B | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Armor materia slot number 4 | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x4C | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Armor materia slot number 5 | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x4D | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Armor materia slot number 6 | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x4E | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Armor materia slot number 7 | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x4F | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Armor materia slot number 8 | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x80 | |||
|style="background:rgb(255,255,255)" | 4 bytes | |||
|style="background:rgb(255,255,255)" | EXP to next level | |||
|} | |||
Table 3: Chocobo record | |||
{| border="0" cellspacing="1" cellpadding="3" style="background: rgb(0,0,0)" align="center" | |||
! style="background:rgb(204,204,204)" align="center" | Offset | |||
! style="background:rgb(204,204,204)" align="center" | Length | |||
! style="background:rgb(204,204,204)" align="center" | Description | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x0 | |||
|style="background:rgb(255,255,255)" | 2 bytes | |||
|style="background:rgb(255,255,255)" | Sprint Speed | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x2 | |||
|style="background:rgb(255,255,255)" | 2 bytes | |||
|style="background:rgb(255,255,255)" | Max Sprint Speed | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x4 | |||
|style="background:rgb(255,255,255)" | 2 bytes | |||
|style="background:rgb(255,255,255)" | Speed | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x6 | |||
|style="background:rgb(255,255,255)" | 2 bytes | |||
|style="background:rgb(255,255,255)" | Max Speed | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x8 | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Acceleration | |||
|- | |||
|style="background:rgb(255,255,255)" | 0x9 | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Cooperation | |||
|- | |||
|style="background:rgb(255,255,255)" | 0xA | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Intelligence | |||
|- | |||
|style="background:rgb(255,255,255)" | 0xB | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Personality | |||
|- | |||
|style="background:rgb(255,255,204)" | 0xC | |||
|style="background:rgb(255,255,204)" | 1 byte | |||
|style="background:rgb(255,255,204)" | Pcount (?) | |||
|- | |||
|style="background:rgb(255,255,255)" | 0xD | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Number of races won | |||
|- | |||
|style="background:rgb(255,255,255)" | 0xE | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Sex (0: male | 1: female) | |||
|- | |||
|style="background:rgb(255,255,255)" | 0xF | |||
|style="background:rgb(255,255,255)" | 1 byte | |||
|style="background:rgb(255,255,255)" | Type (Yellow, Green, Blue, Black, Gold) | |||
|} | |||
== KERNEL.BIN Section 3 Entry == | == KERNEL.BIN Section 3 Entry == | ||
During game initialization, section 3 from KERNEL.BIN is decompressed and copied into RAM. This is all the initial values and structure for most of the Save, excluding the header data and the tail of the last bank (0x0054 to 0x0FE7). | During game initialization, section 3 from KERNEL.BIN is decompressed and copied into RAM. This is all the initial values and structure for most of the Save, excluding the header data and the tail of the last bank (0x0054 to 0x0FE7). |
Revision as of 22:34, 20 March 2005
The Savemap
The following is the general save format for the game. This data excludes the header data that differs between the PSX and PC version.
Table 1: FF7 Save Slot
Coming soon
Table 2: Character record
Offset | Length | Description |
---|---|---|
0x00 | 1 byte | Sephiroth flag for changing Vincent into Sephiroth |
0x01 | 1 byte | Level (0-99) |
0x02 | 1 byte | Strength (0-255) |
0x03 | 1 byte | Vitality (0-255) |
0x04 | 1 byte | Magic (0-255) |
0x05 | 1 byte | Spirit (0-255) |
0x06 | 1 byte | Dexterity (0-255) |
0x07 | 1 byte | Luck (0-255) |
0x08 | 1 byte | Strength Bonus (Power Sources used) |
0x09 | 1 byte | Vitality Bonus (Guard Sources used) |
0x0A | 1 byte | Magic Bonus (Magic Sources used) |
0x0B | 1 byte | Spirit Bonus (Mind Sources used) |
0x0C | 1 byte | Dexterity Bonus (Speed Sources used) |
0x0D | 1 byte | Luck Bonus (Luck Sources used) |
0x0E | 1 byte | Current limit level (1-4) |
0x0F | 1 byte | Current limit bar (0xFF = limit break) |
0x10 | 12 bytes | Name (FF Text format) |
0x1C | 1 byte | Equipped weapon |
0x1D | 1 byte | Equipped armor |
0x1E | 1 byte | Equipped accessory |
0x1F | 3 bytes | Character flags |
0x22 | 2 bytes | Learned limit skills |
0x24 | 2 bytes | Number of kills |
0x26 | 2 bytes | Times limit 1-1 has been used |
0x28 | 2 bytes | Times limit 2-1 has been used |
0x2A | 2 bytes | Times limit 3-1 has been used |
0x2C | 2 bytes | Current HP |
0x2E | 2 bytes | Base HP (before materia alterations) |
0x30 | 2 bytes | Current MP |
0x32 | 2 bytes | Base MP (before materia alterations) |
0x34 | 4 bytes | Unknown |
0x38 | 2 bytes | Maximum HP (after materia alterations) |
0x3A | 2 bytes | Maximum MP (after materia alterations) |
0x3C | 4 bytes | Current EXP |
0x40 | 1 byte | Weapon materia slot number 1 |
0x41 | 1 byte | Weapon materia slot number 2 |
0x42 | 1 byte | Weapon materia slot number 3 |
0x43 | 1 byte | Weapon materia slot number 4 |
0x44 | 1 byte | Weapon materia slot number 5 |
0x45 | 1 byte | Weapon materia slot number 6 |
0x46 | 1 byte | Weapon materia slot number 7 |
0x47 | 1 byte | Weapon materia slot number 8 |
0x48 | 1 byte | Armor materia slot number 1 |
0x49 | 1 byte | Armor materia slot number 2 |
0x4A | 1 byte | Armor materia slot number 3 |
0x4B | 1 byte | Armor materia slot number 4 |
0x4C | 1 byte | Armor materia slot number 5 |
0x4D | 1 byte | Armor materia slot number 6 |
0x4E | 1 byte | Armor materia slot number 7 |
0x4F | 1 byte | Armor materia slot number 8 |
0x80 | 4 bytes | EXP to next level |
Table 3: Chocobo record
Offset | Length | Description |
---|---|---|
0x0 | 2 bytes | Sprint Speed |
0x2 | 2 bytes | Max Sprint Speed |
0x4 | 2 bytes | Speed |
0x6 | 2 bytes | Max Speed |
0x8 | 1 byte | Acceleration |
0x9 | 1 byte | Cooperation |
0xA | 1 byte | Intelligence |
0xB | 1 byte | Personality |
0xC | 1 byte | Pcount (?) |
0xD | 1 byte | Number of races won |
0xE | 1 byte | Sex (0: male | 1: female) |
0xF | 1 byte | Type (Yellow, Green, Blue, Black, Gold) |
KERNEL.BIN Section 3 Entry
During game initialization, section 3 from KERNEL.BIN is decompressed and copied into RAM. This is all the initial values and structure for most of the Save, excluding the header data and the tail of the last bank (0x0054 to 0x0FE7).