Changes

Jump to navigation Jump to search

FF8/GameSaveFormat

9,324 bytes added, 01:13, 15 July 2019
no edit summary
== 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" styleclass="border: 1px solid black; border-collapse: collapse;wikitable"! style="background:rgb(204,204,204)" | Offset! style="background:rgb(204,204,204)" | Size! 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 1st character's current HP
|-
| 0x080x0008
| 2 bytes
| '''Preview:''' Lead 1st 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 1st 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
| 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 ===
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?)
|}

Navigation menu