Changes

Jump to navigation Jump to search

FF8/GameSaveFormat

4,634 bytes added, 15:50, 12 August 2012
no edit summary
== The save format ==
 
=== Header & Preview ===
{| border="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse;"
! style="background:rgb(204,204,204)" | Data
|-
| 0x000x0000
| 2 bytes
| Checksum
|-
| 0x020x0002
| 2 bytes
| Always 0x08FF
|-
| 0x040x0004
| 2 bytes
| '''Preview:''' Location ID
|-
| 0x060x0006
| 2 bytes
| '''Preview:''' Lead character's current HP
|-
| 0x080x0008
| 2 bytes
| '''Preview:''' Lead character's max HP
|-
| 0x0A0x000A
| 2 bytes
| '''Preview:''' save count
|-
| 0x0C0x000C
| 4 bytes
| '''Preview:''' Amount of Gil
|-
| 0x200x0020
| 4 bytes
| '''Preview:''' Total number of seconds played
|-
| 0x240x0024
| 1 byte
| '''Preview:''' Lead character's level
|-
| 0x250x0025
| 1 byte
| '''Preview:''' 1st character's portrait
|-
| 0x260x0026
| 1 byte
| '''Preview:''' 2nd character's portrait
|-
| 0x270x0027
| 1 byte
| '''Preview:''' 3rd character's portrait
|-
| 0x280x0028
| 12 bytes
| '''Preview:''' Squall's name (0x00 terminated)
|-
| 0x340x0034
| 12 bytes
| '''Preview:''' Rinoa's name (0x00 terminated)
|-
| 0x400x0040
| 12 bytes
| '''Preview:''' Angelo's name (0x00 terminated)
|-
| 0x4C0x004C
| 12 bytes
| '''Preview:''' Boko's name (0x00 terminated)
|-
| 0x580x0058
| 4 bytes
| '''Preview:''' Current Disk (0 based)
|-
| 0x5C0x005C
| 4 bytes
| '''Preview:''' Current save (last saved game)
|-
| 0x0060
| 68 bytes
| '''Guardian Forces:''' Quetzalcoatl
|-
| 0x00A4
| 68 bytes
| '''Guardian Forces:''' Shiva
|-
| 0x00E8
| 68 bytes
| '''Guardian Forces:''' Ifrit
|-
| 0x012C
| 68 bytes
| '''Guardian Forces:''' Siren
|-
| 0x0170
| 68 bytes
| '''Guardian Forces:''' Brothers
|-
| 0x01B4
| 68 bytes
| '''Guardian Forces:''' Diablos
|-
| 0x01F8
| 68 bytes
| '''Guardian Forces:''' Carbuncle
|-
| 0x023C
| 68 bytes
| '''Guardian Forces:''' Leviathan
|-
| 0x0280
| 68 bytes
| '''Guardian Forces:''' Pandemonia
|-
| 0x02C4
| 68 bytes
| '''Guardian Forces:''' Cerberus
|-
| 0x0308
| 68 bytes
| '''Guardian Forces:''' Alexander
|-
| 0x034C
| 68 bytes
| '''Guardian Forces:''' Doomtrain
|-
| 0x0390
| 68 bytes
| '''Guardian Forces:''' Bahamut
|-
| 0x03D4
| 68 bytes
| '''Guardian Forces:''' Cactuar
|-
| 0x0418
| 68 bytes
| '''Guardian Forces:''' Tonberry
|-
| 0x045C
| 68 bytes
| '''Guardian Forces:''' Eden
|-
| 0x04A0
| 152 bytes
| '''Characters:''' Squall
|-
| 0x0538
| 152 bytes
| '''Characters:''' Zell
|-
| 0x05D0
| 152 bytes
| '''Characters:''' Irvine
|-
| 0x0668
| 152 bytes
| '''Characters:''' Quistis
|-
| 0x0700
| 152 bytes
| '''Characters:''' Rinoa
|-
| 0x0798
| 152 bytes
| '''Characters:''' Selphie
|-
| 0x0830
| 152 bytes
| '''Characters:''' Seifer
|-
| 0x08C8
| 152 bytes
| '''Characters:''' Edea
|-
| 0x0960
| bytes
| TODO
|}
The checksum calculation starts here.
 
There are 16 G-F: Quetzalcoatl, Shiva, Ifrit, Siren, Brothers, Diablos, Carbuncle, Leviathan, Pandemonia, Cerberus, Alexander, Doomtrain, Bahamut, Cactuar, Tonberry, Eden.<br/>
For each G-F:
 
{| border="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse;"
! style="background:rgb(204,204,204)" | Offset
! style="background:rgb(204,204,204)" | Size
! style="background:rgb(204,204,204)" | Data
|-
| 0x00
| 12 bytes
| Name (0x00 terminated)
|-
| 0x0C
| 4 bytes
| Experience
|-
| style="background:rgb(255,255,204)" | 0x10
| style="background:rgb(255,255,204)" | 1 byte
| style="background:rgb(255,255,204)" | Unknown
|-
| 0x11
| 1 byte
| Exists
|-
| 0x12
| 2 bytes
| HP
|-
| 0x14
| 16 bytes
| Complete abilities (1 bit = 1 ability completed, 9 bits unused)
|-
| 0x24
| 24 bytes
| APs (1 byte = 1 ability of the GF, 2 bytes unused)
|-
| 0x3C
| 2 bytes
| Number of kills
|-
| 0x3E
| 2 bytes
| Number of KOs
|-
| 0x41
| 1 byte
| Learning ability
|-
| 0x42
| 3 bytes
| Forgotten abilities (1 bit = 1 ability of the GF forgotten, 2 bits unused)
|}
 
=== Characters ===
 
Squall, Zell, Irvine, Quistis, Rinoa, Selphie, Seifer, Edea.
For each character:
 
{| border="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse;"
! style="background:rgb(204,204,204)" | Offset
! style="background:rgb(204,204,204)" | Size
! style="background:rgb(204,204,204)" | Data
|-
| 0x00
| 2 bytes
| Current HPs
|-
| 0x02
| 2 bytes
| Max HPs
|-
| 0x04
| 4 bytes
| Experience
|-
| 0x08
| 1 byte
| Model ID
|-
| 0x09
| 1 byte
| Weapon ID
|-
| 0x0A
| 1 byte
| STR
|-
| 0x0B
| 1 byte
| VIT
|-
| 0x0C
| 1 byte
| MAG
|-
| 0x0D
| 1 byte
| SPR
|-
| 0x0E
| 1 byte
| SPD
|-
| 0x0F
| 1 byte
| LCK
|-
| 0x10
| 2*32 bytes
| Magics
|-
| 0x50
| 3 bytes
| Commands
|-
| 0x53
| 1 byte
| ''Padding or unused command''
|-
| 0x54
| 4 bytes
| Abilities
|-
| 0x58
| 2 bytes
| Junctionned GFs
|-
| style="background:rgb(255,255,204)" | 0x5A
| style="background:rgb(255,255,204)" | 1 byte
| style="background:rgb(255,255,204)" | Unknown
|-
| 0x5B
| 1 byte
| Alternative model (Normal, SeeD, Soldier...)
|-
| 0x5C
| 1 byte
| Junction HP
|-
| 0x5D
| 1 byte
| Junction STR
|-
| 0x5E
| 1 byte
| Junction VIT
|-
| 0x5F
| 1 byte
| Junction MAG
|-
| 0x60
| 1 byte
| Junction SPR
|-
| 0x61
| 1 byte
| Junction SPD
|-
| 0x62
| 1 byte
| Junction EVA
|-
| 0x63
| 1 byte
| Junction HIT
|-
| 0x64
| 1 byte
| Junction LCK
|-
| 0x65
| 1 byte
| Junction elemental attack
|-
| 0x66
| 1 byte
| Junction mental attack
|-
| 0x67
| 4 bytes
| Junction elemental defense
|-
| 0x6B
| 4 bytes
| Junction mental defense
|-
| style="background:rgb(255,255,204)" | 0x6F
| style="background:rgb(255,255,204)" | 1 byte
| style="background:rgb(255,255,204)" | Unknown (padding?)
|-
| 0x70
| 16 * 2 bytes
| Compatibility with GFs
|-
| 0x90
| 2 bytes
| Number of kills
|-
| 0x92
| 2 bytes
| Number of KOs
|-
| 0x94
| 1 byte
| Exists
|-
| style="background:rgb(255,255,204)" | 0x95
| style="background:rgb(255,255,204)" | 1 byte
| style="background:rgb(255,255,204)" | Unknown
|-
| 0x96
| 1 byte
| Mental Status
|-
| style="background:rgb(255,255,204)" | 0x97
| style="background:rgb(255,255,204)" | 1 byte
| style="background:rgb(255,255,204)" | Unknown
|-
|}
Anonymous user

Navigation menu