Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
ff6a:doc:savefile [2017/03/18 05:15] madsiur |
ff6a:doc:savefile [2019/02/27 18:29] jvh147 some info. |
||
---|---|---|---|
Line 1: | Line 1: | ||
===== GBA Save File ===== | ===== GBA Save File ===== | ||
- | All the test have been made on a (U) save file (.sav). | + | Most of the test have been made on a (U) save file (.sav). |
^ Offsets | ^ Offsets | ||
| '' | | '' | ||
| '' | | '' | ||
| '' | | '' | ||
- | | '' | + | | '' |
- | | '' | + | | '' |
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
- | ^ Offsets | + | ==== Slot data ==== |
- | | Character block (repeat 16 times) | + | This block is the regular save data space and the first $1E00 bytes of the file are 3 blocks of $A00 bytes for the 3 save slots. They are mostly similar to SNES [[ff3: |
+ | ^ Offsets ^ Description ^ | ||
+ | | Character block (repeat 16 times) || | ||
| '' | | '' | ||
| '' | | '' | ||
Line 29: | Line 37: | ||
| | e: petrify | | | | e: petrify | | ||
| | i: imp | | | | i: imp | | ||
- | | | c: clear | | + | | | c: invisible |
| | m: magitek | | | | m: magitek | | ||
| | p: poison | | | | p: poison | | ||
| | z: zombie | | | | z: zombie | | ||
- | | | d: dark | | + | | | d: blind | |
| '' | | '' | ||
| | f: float | | | | f: float | | ||
Line 39: | Line 47: | ||
| | h: hide (?) | | | | h: hide (?) | | ||
| | c: control (?) | | | | c: control (?) | | ||
- | | | m: morph (?) | | + | | | m: trance |
- | | | l: life 3 (?) | | + | | | l: reraise |
| | z: freeze | | | z: freeze | ||
| | r: rage (?) | | | | r: rage (?) | | ||
| '' | | '' | ||
- | | '' | + | | '' |
| '' | | '' | ||
| '' | | '' | ||
Line 55: | Line 63: | ||
| '' | | '' | ||
| '' | | '' | ||
- | | End of character block || | + | | End of character block || |
- | | '' | + | | Roster (16 bytes. One byte per character.) |
- | | '' | + | | '' |
+ | | | ||
+ | | | e: Character is enabled | | ||
+ | | | r: Battle Row (back row if set) | | ||
+ | | | b: Battle Order (1-4) | | ||
+ | | | p: Party (0: unassigned, 1-3: groups) | | ||
+ | | Generic Data || | ||
+ | | '' | ||
| '' | | '' | ||
| '' | | '' | ||
| '' | | '' | ||
- | | '' | + | | '' |
- | | '' | + | | Ability Lists || |
- | | '' | + | | '' |
- | | '' | + | | '' |
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | Config Data || | ||
+ | | '' | ||
+ | | '' | ||
+ | | | c: command set (window/ | ||
+ | | | m: message speed | | ||
+ | | | w: battle mode (active/ | ||
+ | | | b: battle speed | | ||
+ | | '' | ||
+ | | | g: gauge | | ||
+ | | | c: cursor | | ||
+ | | | s: sound (removed) | | ||
+ | | | r: re-equip | | ||
+ | | | w: wallpaper (values 0-7 valid) | | ||
+ | | '' | ||
+ | | | 4: player 2 control character 4 | | ||
+ | | | 3: player 2 control character 3 | | ||
+ | | | 2: player 2 control character 2 | | ||
+ | | | 1: player 2 control character 1 | | ||
+ | | '' | ||
+ | | | a: A button mapping (0 = start, 1 = A, 2 = B, 3 = X, 4 = Y, 5 = top L, 6 = top R, 7 = select) | | ||
+ | | | b: B button mapping | ||
+ | | '' | ||
+ | | | ||
+ | | | y: Y button mapping | | ||
+ | | '' | ||
+ | | | l: top L button mapping | | ||
+ | | | r: top R button mapping | | ||
+ | | '' | ||
+ | | | t: Start button mapping | | ||
+ | | | e: Select button mapping | | ||
+ | | '' | ||
+ | | | m: controller 2 enabled (unused) | | ||
+ | | | b: enable custom button config (unused) | | ||
+ | | | c: Font/Window palette color selection (unused) | | ||
+ | | | s: Magic order | | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | Battle Events || | ||
+ | | '' | ||
+ | | '' | ||
+ | | | a: if set, program compares current monster index with monster index at CF3780,X. if equal, monster index is changed to monster index at CF3782,X. | | ||
+ | | | b-h: same as a | | ||
+ | | '' | ||
+ | | | m: permanent trance (for Humbaba battle) | | ||
+ | | | t: trance lasts twice as long (set after Humbaba battle) | | ||
+ | | | f: magic only (Cultists' | ||
+ | | '' | ||
+ | | | z: zone eater engulfed the party | | ||
+ | | | t: timers are shown in menu and battle | | ||
+ | | | r: ran out of time (before emperor' | ||
+ | | | b: ran away from previous battle | | ||
+ | | | e: gained AP is displayed (espers have been acquired) | | ||
+ | | | m: trance is available | | ||
+ | | | s: enables scene with LOCKE and EDGAR if TERRA uses magic. | | ||
+ | | | g: game over after battle ends | | ||
+ | | '' | ||
+ | | | u: LOCKE is wearing soldier uniform | | ||
+ | | | m: LOCKE is wearing merchant clothes | | ||
+ | | | s: SHADOW won't leave after battle | | ||
+ | | | g: GAU has been obtained | | ||
+ | | | d: DeathGaze has been defeated | | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | Field Data || | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | Position data || | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | | d: facing direction | | ||
+ | | | n: show map name | | ||
+ | | | z: z-level | | ||
+ | | | p: set destination as parent map | | ||
+ | | | m: Current Map Index | | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | Other Data || | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | | ||
+ | | | f: Timer is visible on field (timer 0 only). | | ||
+ | | | r: End battle or exit menu if timer runs out. | | ||
+ | | | m: Timer is visible in menu and battle (timer 0 only). | | ||
+ | | '' | ||
+ | | '' | ||
+ | | End of timer block || | ||
+ | | '' | ||
+ | | Event Variables || | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | More position data || | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | Checkum || | ||
+ | | '' | ||
+ | |||
+ | ==== Save marks ==== | ||
+ | This block contains various identifying save marks. | ||
+ | ^ Offsets ^ Description ^ | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | |||
+ | ==== Data extension ==== | ||
+ | A block of data was added to the GBA port. Item inventory and Esper data were moved here when compared to the SNES version. The size of the block is 1024 bytes including a two byte checksum and it repeats three times for the three save slots. | ||
+ | ^ Offsets ^ Description ^ | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | |||
+ | ==== Bestiary ==== | ||
+ | Bestiary was included in the GBA version and this block has its data. The size of the block is 1024 bytes including a two byte checksum and it repeats three times for the three save slots. Two bytes are used per monster and the byte order is the same as the monster index order. For a monster to appear in the bestiary, it needs to be slain at least once in a victorious battle. The victory increments a slain counter which gets values from 0x0-7FFF. 0x8000 clears the new entry flag. Total space is 1022/2 = 511 slots of which 384 are for pages visible in the game browser, 39 for unlisted monsters and the rest 88 are assumed to be empty. The last two bytes hold the bestiary checksum. | ||
+ | |||
+ | | Bestiary || | ||
+ | | '' | ||
+ | | '' | ||
+ | | Checksum || | ||
+ | | '' | ||
+ | |||
+ | Example values: | ||
+ | | '' | ||
+ | | '' | ||
+ | |||
+ | |||
+ | ==== Quicksave Slot ==== | ||
+ | A quicksave option was included in the GBA port and it enables the player to temporary save the game almost anywhere. Quicksave cannot directly be transferred to the other slots in-game, but contains the same data as the other slots plus some additions. | ||
+ | |||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' |