Difference between revisions of "FF8/GameSaveFormat"

From Final Fantasy Inside
< FF8
Jump to navigation Jump to search
my_wiki>Myst6re
 
(12 intermediate revisions by 5 users not shown)
Line 1: Line 1:
== The save format ==
+
By myst6re.
  
=== Header & Preview ===
+
== The save format  ==
 
+
PC steam version: Offsets start from at 384 (0x0180). File is compressed with LZS.
{| border="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse;"
+
{| class="wikitable"
! style="background:rgb(204,204,204)" | Offset
+
! Offset
! style="background:rgb(204,204,204)" | Size
+
! Size
! style="background:rgb(204,204,204)" | Data
+
! Data
 
|-
 
|-
| 0x00
+
| 0x0000
 
| 2 bytes
 
| 2 bytes
 
| Checksum
 
| Checksum
 
|-
 
|-
| 0x02
+
| 0x0002
 
| 2 bytes
 
| 2 bytes
 
| Always 0x08FF
 
| Always 0x08FF
 
|-
 
|-
| 0x04
+
| 0x0004
 
| 2 bytes
 
| 2 bytes
 
| '''Preview:''' Location ID
 
| '''Preview:''' Location ID
 
|-
 
|-
| 0x06
+
| 0x0006
 
| 2 bytes
 
| 2 bytes
| '''Preview:''' Lead character's current HP
+
| '''Preview:''' 1st character's current HP
 
|-
 
|-
| 0x08
+
| 0x0008
 
| 2 bytes
 
| 2 bytes
| '''Preview:''' Lead character's max HP
+
| '''Preview:''' 1st character's max HP
 
|-
 
|-
| 0x0A
+
| 0x000A
 
| 2 bytes
 
| 2 bytes
 
| '''Preview:''' save count
 
| '''Preview:''' save count
 
|-
 
|-
| 0x0C
+
| 0x000C
 
| 4 bytes
 
| 4 bytes
 
| '''Preview:''' Amount of Gil
 
| '''Preview:''' Amount of Gil
 
|-
 
|-
| 0x20
+
| 0x0020
 
| 4 bytes
 
| 4 bytes
 
| '''Preview:''' Total number of seconds played
 
| '''Preview:''' Total number of seconds played
 
|-
 
|-
| 0x24
+
| 0x0024
 
| 1 byte
 
| 1 byte
| '''Preview:''' Lead character's level
+
| '''Preview:''' 1st character's level
 
|-
 
|-
| 0x25
+
| 0x0025
 
| 1 byte
 
| 1 byte
 
| '''Preview:''' 1st character's portrait
 
| '''Preview:''' 1st character's portrait
 
|-
 
|-
| 0x26
+
| 0x0026
 
| 1 byte
 
| 1 byte
 
| '''Preview:''' 2nd character's portrait
 
| '''Preview:''' 2nd character's portrait
 
|-
 
|-
| 0x27
+
| 0x0027
 
| 1 byte
 
| 1 byte
 
| '''Preview:''' 3rd character's portrait
 
| '''Preview:''' 3rd character's portrait
 
|-
 
|-
| 0x28
+
| 0x0028
 
| 12 bytes
 
| 12 bytes
 
| '''Preview:''' Squall's name (0x00 terminated)
 
| '''Preview:''' Squall's name (0x00 terminated)
 
|-
 
|-
| 0x34
+
| 0x0034
 
| 12 bytes
 
| 12 bytes
 
| '''Preview:''' Rinoa's name (0x00 terminated)
 
| '''Preview:''' Rinoa's name (0x00 terminated)
 
|-
 
|-
| 0x40
+
| 0x0040
 
| 12 bytes
 
| 12 bytes
 
| '''Preview:''' Angelo's name (0x00 terminated)
 
| '''Preview:''' Angelo's name (0x00 terminated)
 
|-
 
|-
| 0x4C
+
| 0x004C
 
| 12 bytes
 
| 12 bytes
 
| '''Preview:''' Boko's name (0x00 terminated)
 
| '''Preview:''' Boko's name (0x00 terminated)
 
|-
 
|-
| 0x58
+
| 0x0058
 
| 4 bytes
 
| 4 bytes
 
| '''Preview:''' Current Disk (0 based)
 
| '''Preview:''' Current Disk (0 based)
 
|-
 
|-
| 0x5C
+
| 0x005C
 
| 4 bytes
 
| 4 bytes
 
| '''Preview:''' Current save (last saved game)
 
| '''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
 +
| 400 bytes
 +
| Shops
 +
|-
 +
| 0x0AF0
 +
| 20 bytes
 +
| Configuration
 +
|-
 +
| 0x0B04
 +
| 4 bytes
 +
| Party (0xFF terminated)
 +
|-
 +
| 0x0B08
 +
| 4 bytes
 +
| Known weapons
 +
|-
 +
| 0x0B0C
 +
| 12 bytes
 +
| Griever name (FF8 text format)
 +
|-
 +
| style="background: rgb(255,255,204)" | 0x0B18
 +
| style="background: rgb(255,255,204)" | 2 bytes
 +
| style="background: rgb(255,255,204)" | Unknown (always 7966?)
 +
|-
 +
| style="background: rgb(255,255,204)" | 0x0B1A
 +
| style="background: rgb(255,255,204)" | 2 bytes
 +
| style="background: rgb(255,255,204)" | Unknown
 +
|-
 +
| 0x0B1C
 +
| 4 bytes
 +
| Amount of Gil
 +
|-
 +
| 0x0B20
 +
| 4 bytes
 +
| Amount of Gil (Laguna)
 +
|-
 +
| 0x0B24
 +
| 2 bytes
 +
| '''Limit Break''' Quistis
 +
|-
 +
| 0x0B26
 +
| 2 bytes
 +
| '''Limit Break''' Zell
 +
|-
 +
| 0x0B28
 +
| 1 byte
 +
| '''Limit Break''' Irvine
 +
|-
 +
| 0x0B29
 +
| 1 byte
 +
| '''Limit Break''' Selphie
 +
|-
 +
| 0x0B2A
 +
| 1 byte
 +
| '''Limit Break''' Angelo completed
 +
|-
 +
| 0x0B2B
 +
| 1 byte
 +
| '''Limit Break''' Angelo known
 +
|-
 +
| 0x0B2C
 +
| 8 bytes
 +
| '''Limit Break''' Angelo points
 +
|-
 +
| 0x0B34
 +
| 32 bytes
 +
| '''Items''' battle order
 +
|-
 +
| 0x0B54
 +
| 396 bytes
 +
| '''Items''' 198 items (Item ID and Quantity)
 +
|-
 +
| 0x0CE0
 +
| 4 bytes
 +
| Game time
 +
|-
 +
| 0x0CE4
 +
| 4 bytes
 +
| Countdown
 +
|-
 +
| style="background: rgb(255,255,204)" | 0x0CE8
 +
| style="background: rgb(255,255,204)" | 4 bytes
 +
| style="background: rgb(255,255,204)" | Unknown
 +
|-
 +
| 0x0CEC
 +
| 4 bytes
 +
| '''Battle:''' victory count
 +
|-
 +
| style="background: rgb(255,255,204)" | 0x0CF0
 +
| style="background: rgb(255,255,204)" | 2 bytes
 +
| style="background: rgb(255,255,204)" | Unknown
 +
|-
 +
| 0x0CF2
 +
| 2 bytes
 +
| '''Battle:''' battle escaped
 +
|-
 +
| style="background: rgb(255,255,204)" | 0x0CF4
 +
| style="background: rgb(255,255,204)" | 4 bytes
 +
| style="background: rgb(255,255,204)" | Unknown
 +
|-
 +
| 0x0CF8
 +
| 4 bytes
 +
| '''Battle:''' Tonberry killed count
 +
|-
 +
| 0x0CFC
 +
| 4 bytes
 +
| '''Battle:''' Tonberry Sr killed (yeah, this is a boolean)
 +
|-
 +
| style="background: rgb(255,255,204)" | 0x0D00
 +
| style="background: rgb(255,255,204)" | 4 bytes
 +
| style="background: rgb(255,255,204)" | Unknown
 +
|-
 +
| 0x0D04
 +
| 4 bytes
 +
| '''Battle:''' First "Bug" battle (R1 tip)
 +
|-
 +
| 0x0D08
 +
| 4 bytes
 +
| '''Battle:''' First "Bomb" battle (Elemental tip)
 +
|-
 +
| 0x0D0C
 +
| 4 bytes
 +
| '''Battle:''' First "T-Rex" battle (Mental tip)
 +
|-
 +
| 0x0D10
 +
| 4 bytes
 +
| '''Battle:''' First "Irvine" battle (Irvine's limit break tip)
 +
|-
 +
| 0x0D14
 +
| 8 bytes
 +
| '''Battle:''' Magic drawn once
 +
|-
 +
| 0x0D1C
 +
| 20 bytes
 +
| '''Battle:''' Ennemy scanned once
 +
|-
 +
| 0x0D30
 +
| 1 byte
 +
| '''Battle:''' Renzokuken auto
 +
|-
 +
| 0x0D31
 +
| 1 byte
 +
| '''Battle:''' Renzokuken indicator
 +
|-
 +
| 0x0D32
 +
| 1 byte
 +
| '''Battle:''' dream/Odin/Phoenix/Gilgamesh/Angelo disabled/Angel Wing enabled/???/???
 +
|-
 +
| 0x0D33
 +
| 16 bytes
 +
| Tutorial infos
 +
|-
 +
| 0x0D43
 +
| 1 byte
 +
| SeeD test level
 +
|-
 +
| 0x0D44
 +
| 4 bytes
 +
| style="background: rgb(255,255,204)" | Unknown
 +
|-
 +
| 0x0D48
 +
| 4 bytes
 +
| Party (last byte always = 255)
 +
|-
 +
| 0x0D4C
 +
| 4 bytes
 +
| style="background: rgb(255,255,204)" | Unknown
 +
|-
 +
| 0x0D50
 +
| 2 bytes
 +
| Module (1= field, 2= worldmap, 3= battle)
 +
|-
 +
| 0x0D52
 +
| 2 bytes
 +
| Current field
 +
|-
 +
| 0x0D54
 +
| 2 bytes
 +
| Previous field
 +
|-
 +
| 0x0D56
 +
| 3*2 bytes (signed)
 +
| Coord X (party1, party2, party3)
 +
|-
 +
| 0x0D5C
 +
| 3*2 bytes (signed)
 +
| Coord Y (party1, party2, party3)
 +
|-
 +
| 0x0D62
 +
| 3*2 bytes
 +
| Triangle ID (party1, party2, party3)
 +
|-
 +
| 0x0D68
 +
| 3*1 bytes
 +
| Direction (party1, party2, party3)
 +
|-
 +
| 0x0D6B
 +
| 1 byte
 +
| ''Padding''
 +
|-
 +
| 0x0D6C
 +
| 4 bytes
 +
| style="background: rgb(255,255,204)" | Unknown
 +
|-
 +
| 0x0D70
 +
| 256 + 1024 bytes
 +
|
 +
[[FF8/Variables|Field vars]]
 +
|-
 +
| 0x1270
 +
| 128 bytes
 +
| Worldmap (TODO)
 +
|-
 +
| 0x12F0
 +
| 128 bytes
 +
| Triple Triad (TODO)
 +
|-
 +
| 0x1370
 +
| 64 bytes
 +
| Chocobo World (TODO)
 
|}
 
|}
  
 +
<br />
  
=== Guardian Forces ===
+
=== Guardian Forces ===
  
 
The checksum calculation starts here.
 
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:
 +
 +
{| class="wikitable"
 +
! Offset
 +
! Size
 +
! 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:
 +
 +
{| class="wikitable"
 +
! Offset
 +
! Size
 +
! 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
 +
|}
 +
 +
===  Worldmap  ===
 +
 +
# TODO
 +
 +
===  Triple Triad  ===
 +
 +
# TODO
 +
 +
===  Chocobo World  ===
 +
 +
{| class="wikitable"
 +
! Offset
 +
! Size
 +
! Data
 +
|-
 +
| 0x00
 +
| 1 byte (bit field)
 +
| Enabled / In world / MiniMog found / Demon King defeated / Koko kidnapped / Hurry! / Koko met / Event Wait off
 +
|-
 +
| 0x01
 +
| 1 byte
 +
| Level
 +
|-
 +
| 0x02
 +
| 1 byte
 +
| Current HP
 +
|-
 +
| 0x03
 +
| 1 byte
 +
| Max HP
 +
|-
 +
| 0x04
 +
| 2 bytes
 +
| Weapon (4 bit = 1 weapon)
 +
|-
 +
| 0x06
 +
| 1 byte
 +
| Rank
 +
|-
 +
| 0x07
 +
| 1 byte
 +
| Move
 +
|-
 +
| 0x08
 +
| 4 bytes
 +
| Save count
 +
|-
 +
| 0x0C
 +
| 2 bytes
 +
| id related
 +
|-
 +
| style="background: rgb(255,255,204)" | 0x0E
 +
| style="background: rgb(255,255,204)" | 6 bytes
 +
| style="background: rgb(255,255,204)" | Unknown
 +
|-
 +
| 0x14
 +
| 1 byte
 +
| Item Class A count
 +
|-
 +
| 0x15
 +
| 1 byte
 +
| Item Class B count
 +
|-
 +
| 0x16
 +
| 1 byte
 +
| Item Class C count
 +
|-
 +
| 0x17
 +
| 1 byte
 +
| Item Class D count
 +
|-
 +
| style="background: rgb(255,255,204)" | 0x18
 +
| style="background: rgb(255,255,204)" | 16 bytes
 +
| style="background: rgb(255,255,204)" | Unknown
 +
|-
 +
| 0x28
 +
| 4 bytes
 +
| Associated save ID
 +
|-
 +
| style="background: rgb(255,255,204)" | 0x2C
 +
| style="background: rgb(255,255,204)" | 1 byte
 +
| style="background: rgb(255,255,204)" | Unknown
 +
|-
 +
| 0x2D
 +
| 1 byte
 +
| Boko Attack (star count: 0 = ChocoFire, 1 = ChocoFlare, 2 = ChocoMeteor, 3 = ChocoBocle)
 +
|-
 +
| style="background: rgb(255,255,204)" | 0x2E
 +
| style="background: rgb(255,255,204)" | 1 byte
 +
| style="background: rgb(255,255,204)" | Unknown
 +
|-
 +
| 0x2F
 +
| 1 byte
 +
| Home walking
 +
|-
 +
| style="background: rgb(255,255,204)" | 0x30
 +
| style="background: rgb(255,255,204)" | 16 bytes
 +
| style="background: rgb(255,255,204)" | Unknown (unused?)
 +
|}

Latest revision as of 01:13, 15 July 2019

By myst6re.

The save format

PC steam version: Offsets start from at 384 (0x0180). File is compressed with LZS.

Offset Size Data
0x0000 2 bytes Checksum
0x0002 2 bytes Always 0x08FF
0x0004 2 bytes Preview: Location ID
0x0006 2 bytes Preview: 1st character's current HP
0x0008 2 bytes Preview: 1st character's max HP
0x000A 2 bytes Preview: save count
0x000C 4 bytes Preview: Amount of Gil
0x0020 4 bytes Preview: Total number of seconds played
0x0024 1 byte Preview: 1st character's level
0x0025 1 byte Preview: 1st character's portrait
0x0026 1 byte Preview: 2nd character's portrait
0x0027 1 byte Preview: 3rd character's portrait
0x0028 12 bytes Preview: Squall's name (0x00 terminated)
0x0034 12 bytes Preview: Rinoa's name (0x00 terminated)
0x0040 12 bytes Preview: Angelo's name (0x00 terminated)
0x004C 12 bytes Preview: Boko's name (0x00 terminated)
0x0058 4 bytes Preview: Current Disk (0 based)
0x005C 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 400 bytes Shops
0x0AF0 20 bytes Configuration
0x0B04 4 bytes Party (0xFF terminated)
0x0B08 4 bytes Known weapons
0x0B0C 12 bytes Griever name (FF8 text format)
0x0B18 2 bytes Unknown (always 7966?)
0x0B1A 2 bytes Unknown
0x0B1C 4 bytes Amount of Gil
0x0B20 4 bytes Amount of Gil (Laguna)
0x0B24 2 bytes Limit Break Quistis
0x0B26 2 bytes Limit Break Zell
0x0B28 1 byte Limit Break Irvine
0x0B29 1 byte Limit Break Selphie
0x0B2A 1 byte Limit Break Angelo completed
0x0B2B 1 byte Limit Break Angelo known
0x0B2C 8 bytes Limit Break Angelo points
0x0B34 32 bytes Items battle order
0x0B54 396 bytes Items 198 items (Item ID and Quantity)
0x0CE0 4 bytes Game time
0x0CE4 4 bytes Countdown
0x0CE8 4 bytes Unknown
0x0CEC 4 bytes Battle: victory count
0x0CF0 2 bytes Unknown
0x0CF2 2 bytes Battle: battle escaped
0x0CF4 4 bytes Unknown
0x0CF8 4 bytes Battle: Tonberry killed count
0x0CFC 4 bytes Battle: Tonberry Sr killed (yeah, this is a boolean)
0x0D00 4 bytes Unknown
0x0D04 4 bytes Battle: First "Bug" battle (R1 tip)
0x0D08 4 bytes Battle: First "Bomb" battle (Elemental tip)
0x0D0C 4 bytes Battle: First "T-Rex" battle (Mental tip)
0x0D10 4 bytes Battle: First "Irvine" battle (Irvine's limit break tip)
0x0D14 8 bytes Battle: Magic drawn once
0x0D1C 20 bytes Battle: Ennemy scanned once
0x0D30 1 byte Battle: Renzokuken auto
0x0D31 1 byte Battle: Renzokuken indicator
0x0D32 1 byte Battle: dream/Odin/Phoenix/Gilgamesh/Angelo disabled/Angel Wing enabled/???/???
0x0D33 16 bytes Tutorial infos
0x0D43 1 byte SeeD test level
0x0D44 4 bytes Unknown
0x0D48 4 bytes Party (last byte always = 255)
0x0D4C 4 bytes Unknown
0x0D50 2 bytes Module (1= field, 2= worldmap, 3= battle)
0x0D52 2 bytes Current field
0x0D54 2 bytes Previous field
0x0D56 3*2 bytes (signed) Coord X (party1, party2, party3)
0x0D5C 3*2 bytes (signed) Coord Y (party1, party2, party3)
0x0D62 3*2 bytes Triangle ID (party1, party2, party3)
0x0D68 3*1 bytes Direction (party1, party2, party3)
0x0D6B 1 byte Padding
0x0D6C 4 bytes Unknown
0x0D70 256 + 1024 bytes

Field vars

0x1270 128 bytes Worldmap (TODO)
0x12F0 128 bytes Triple Triad (TODO)
0x1370 64 bytes Chocobo World (TODO)


Guardian Forces

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.
For each G-F:

Offset Size Data
0x00 12 bytes Name (0x00 terminated)
0x0C 4 bytes Experience
0x10 1 byte 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:

Offset Size 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
0x5A 1 byte 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
0x6F 1 byte 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
0x95 1 byte Unknown
0x96 1 byte Mental Status
0x97 1 byte Unknown

Worldmap

  1. TODO

Triple Triad

  1. TODO

Chocobo World

Offset Size Data
0x00 1 byte (bit field) Enabled / In world / MiniMog found / Demon King defeated / Koko kidnapped / Hurry! / Koko met / Event Wait off
0x01 1 byte Level
0x02 1 byte Current HP
0x03 1 byte Max HP
0x04 2 bytes Weapon (4 bit = 1 weapon)
0x06 1 byte Rank
0x07 1 byte Move
0x08 4 bytes Save count
0x0C 2 bytes id related
0x0E 6 bytes Unknown
0x14 1 byte Item Class A count
0x15 1 byte Item Class B count
0x16 1 byte Item Class C count
0x17 1 byte Item Class D count
0x18 16 bytes Unknown
0x28 4 bytes Associated save ID
0x2C 1 byte Unknown
0x2D 1 byte Boko Attack (star count: 0 = ChocoFire, 1 = ChocoFlare, 2 = ChocoMeteor, 3 = ChocoBocle)
0x2E 1 byte Unknown
0x2F 1 byte Home walking
0x30 16 bytes Unknown (unused?)