Main Page
Contents
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. (PSX header is 512 Bytes, checksum @ 0x200) (PC header is 9 bytes, checksum @ 0x11) Note: For the preview descriptions below, changing these values does not change any in-game values. These are only used so a player can preview the data within the save file when viewing the Save menu.
Offset | Length | Description | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 2 bytes | Checksum (how to generate) | ||||||||||
0x0002 | 2 bytes | z_1 Unknown (Always 0x00?) | ||||||||||
0x0004 | 1 byte | Preview: Lead character's level | ||||||||||
0x0005 | 1 byte | Preview: Lead character's portrait | ||||||||||
0x00: Cloud 0x01: Barret 0x02: Tifa 0x03: Aeris 0x04: Red XIII 0x05: Yuffie 0x06: Cait Sith |
0x07: Vincent 0x08: Cid 0x09: Young Cloud 0x0A: Sephiroth 0x0B: Chocobo 0xFF: None | |||||||||||
0x0006 | 1 byte | Preview: 2nd character's portrait | ||||||||||
0x0007 | 1 byte | Preview: 3rd character's portrait | ||||||||||
0x0008 | 16 bytes | Preview: Lead character's name, FF Text format , terminated with 0xFF | ||||||||||
0x0018 | 2 bytes | Preview: Lead character's current HP | ||||||||||
0x001A | 2 bytes | Preview: Lead character's max HP | ||||||||||
0x001C | 2 bytes | Preview: Lead character's current MP | ||||||||||
0x001E | 2 bytes | Preview: Lead character's max MP | ||||||||||
0x0020 | 4 bytes | Preview: Amount of Gil | ||||||||||
0x0024 | 4 bytes | Preview: Total number of seconds played | ||||||||||
0x0028 | 32 bytes | Preview: Save location, FF Text format, terminated with 0xFF | ||||||||||
0x0048 | 3 bytes | RGB value for upper left corner of window | ||||||||||
0x004B | 3 bytes | RGB value for upper right corner of window | ||||||||||
0x004E | 3 bytes | RGB value for lower left corner of window | ||||||||||
0x0051 | 3 bytes | RGB value for lower right corner of window | ||||||||||
0x0054 | 132 bytes | Character record: Cloud [see below for Character record format] | ||||||||||
0x00D8 | 132 bytes | Character record: Barret [see below for Character record format] | ||||||||||
0x015C | 132 bytes | Character record: Tifa [see below for Character record format] | ||||||||||
0x01E0 | 132 bytes | Character record: Aeris [see below for Character record format] | ||||||||||
0x0264 | 132 bytes | Character record: Red XIII [see below for Character record format] | ||||||||||
0x02E8 | 132 bytes | Character record: Yuffie [see below for Character record format] | ||||||||||
0x036C | 132 bytes | Character record: Cait Sith (or Young Cloud) [see below for Character record format] | ||||||||||
0x03F0 | 132 bytes | Character record: Vincent (or Sephiroth) [see below for Character record format] | ||||||||||
0x0474 | 132 bytes | Character record: Cid [see below for Character record format] | ||||||||||
0x04F8 | 1 byte | Party member in slot 1 [uses same format as character portrait above] | ||||||||||
0x04F9 | 1 byte | Party member in slot 2 | ||||||||||
0x04FA | 1 byte | Party member in slot 3 | ||||||||||
0x04FB | 1 byte | z_2 Unknown (Always 0xFF?) | ||||||||||
0x04FC | 640 bytes | Party Item stock, 2 bytes per item, 320 item slots max [See save item list below] | ||||||||||
0x077C | 800 bytes | Party Materia stock, 4 bytes per materia, 200 materia max [See save materia list ] | ||||||||||
0x0A9C | 192 bytes | Materia stolen by Yuffie, 4 bytes per materia, 48 materia max [See save materia list ] | ||||||||||
0x0B5C | 32 bytes | z_3 Unknown (Always 0xFF?) | ||||||||||
0x0B7C | 4 bytes | Party's Gil amount | ||||||||||
0x0B80 | 4 bytes | Total number of seconds played | ||||||||||
0x0B84 | 3 bytes | Countdown Timer (HH:MM:SS) | ||||||||||
0x0B87 | 13 bytes | z_4 Unknown | ||||||||||
0x0B88 z_4[1] |
1 byte | Game timer / ~ 10 times faster that 0x0B89 | ||||||||||
0x0B89 z_4[2] |
1 byte | Game timer / from 0 to 255 in one sec | ||||||||||
0x0B8A z_4[3] |
2 bytes | Unknown 0x00 padding? | ||||||||||
0x0B8C z_4[5] |
1 byte | Same value that 0x0B88. Game timer cs(Centiseconds???) | ||||||||||
0x0B8D z_4[6] |
1 byte | Same value that 0x0B89. Game timer dc(Deciseconds???) | ||||||||||
0x0B8E z_4[7] |
2 bytes | Unknown 0x00 padding? | ||||||||||
0x0B94 | 2 bytes | Current map | ||||||||||
0x0B96 | 2 bytes | Current location | ||||||||||
0x0B98 | 2 bytes | z_5 Unknown | ||||||||||
0x0B9A | 2 bytes | X location on Field map (Signed) | ||||||||||
0x0B9C | 2 bytes | Y location on Field map (Signed) | ||||||||||
0x0B9E | 2 bytes | Triangle Id of player on Field map (Unsigned) | ||||||||||
0x0BA0 | 1 byte | Direction of Player Model on Field Map(Unsigned) | ||||||||||
0x0BA1 | 3 bytes | z_6 Unknown | ||||||||||
0x0BA1 z_6[0] |
1 byte | Field Encounter Timer: StepID/Seed ([1]) | ||||||||||
0x0BA2 z_6[1] |
1 byte | Field Encounter Timer: Offset ([2]) | ||||||||||
0x0BA4 | [BEGINNING OF FIELD SCRIPT MEMORY BANK 1 (1/2)] | |||||||||||
0x0CA4 | [BEGINNING OF FIELD SCRIPT MEMORY BANK 2 (3/4)] | |||||||||||
0x0DA4 | [BEGINNING OF FIELD SCRIPT MEMORY BANK 3 (B/C)] | |||||||||||
0x0EA4 | [BEGINNING OF FIELD SCRIPT MEMORY BANK 4 (D/E)] | |||||||||||
0x0FA4 | [BEGINNING OF FIELD SCRIPT MEMORY BANK 5 (7/F)] | |||||||||||
0x10A4 | 2 bytes | PHS Locking Mask (1: Locked) | ||||||||||
| ||||||||||||
0x10A6 | 2 bytes | PHS Visibility Mask (does not turn off party characters) | ||||||||||
| ||||||||||||
0x10A8 | 48 bytes | z_39 Unknown (Always 0x00?) | ||||||||||
0x10D8 | 1 byte | Battle Speed (0x00: fastest, 0xFF: slowest) | ||||||||||
0x10D9 | 1 byte | Battle Message Speed | ||||||||||
0x10DA | 1 byte | General configuration | ||||||||||
Sound: mono (0x00); stereo (0x01) | ||||||||||||
Controller: normal (0x00); customize (0x04) | ||||||||||||
Cursor: initial (0x00); memory (0x10) | ||||||||||||
ATB: Active (0x00); Recommended (0x40); Wait (0x80) | ||||||||||||
0x10DB | 1 byte | General configuration (continued) | ||||||||||
Camera angle: Auto (0x00); Fix (0x01) | ||||||||||||
Magic order: (game crashes if flag set to 0x18 or 0x1C) "1. restore attack indirect" (0x00) "2. restore indirect attack" (0x04) "3. attack indirect restore" (0x08) "4. attack restore indirect" (0x0C) "5. indirect restore attack" (0x10) "6. indirect attack restore" (0x14) | ||||||||||||
Extra battle window displaying information: Inactive (0x00); Active (0x40) | ||||||||||||
0x10DC | 16 bytes | Controller Mapping (PSX ONLY) l2,r2,l1,r1,tri,circle,cross,square,Select,?,?,Start,u,r,d,l l2,r2,l1,r1,Menu,OK,Cancel,Ext,Help,?,?,Pause,u,r,d,l | ||||||||||
0x10EC | 1 byte | Message Speed | ||||||||||
0x10ED | 8 bytes | z_40 Unknown (Always 0x00?) |
Save Memory Bank 1/2
Offset | Length | Description | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0BA4 | 2 byte | Main progress variable | |||||||||||
0x0BA6 z_7[0] |
1 Byte | Yuffie's Initial Level (z_7 Unknown)
Byte value before Yuffie join the team: 0x00. | |||||||||||
0x0BA7 | 1 byte | Aeris' current love points | |||||||||||
0x0BA8 | 1 byte | Tifa's current love points | |||||||||||
0x0BA9 | 1 byte | Yuffie's current love points | |||||||||||
0x0BAA | 1 byte | Barret's current love points | |||||||||||
0x0BAB | 17 bytes | z_8 Unknown | |||||||||||
0x0BB4 z_8[9] |
1 byte | Game timer (Hours) | |||||||||||
0x0BB5 z_8[10] |
1 byte | Game timer (Minutes) | |||||||||||
0x0BB6 z_8[11] |
1 byte | Game timer (Seconds) | |||||||||||
0x0BB7 z_8[12] |
1 byte | Game timer (Tenths?) From 0x00 to ~0x21 in one sec.(33 FPS?) | |||||||||||
0x0BB8 z_8[13] |
1 bytes | Countdown Timer (Hours?) | |||||||||||
0x0BB9 z_8[14] |
1 bytes | Countdown Timer (Minutes) (Tested in Bombing Mission) | |||||||||||
0x0BBA z_8[15] |
1 bytes | Countdown Timer (Seconds) (Tested in Bombing Mission) | |||||||||||
0x0BBB z_8[16] |
1 bytes | Countdown Timer From 0 to 30 (dec) in one sec. (Tested in Bombing Mission) | |||||||||||
0x0BBC | 2 bytes | Number of battles fought | |||||||||||
0x0BBE | 2 bytes | Number of escapes | |||||||||||
0x0BC0 | 2 bytes | Menu Visiblity Mask (Quit not affected) | |||||||||||
| |||||||||||||
0x0BC2 |
2 bytes | Menu Locking Mask (1: Locked) (Quit not affected) | |||||||||||
| |||||||||||||
0x0BC4 | 16 bytes | z_9 Unknown | |||||||||||
0x0BC8 z_9[4] |
1 byte | Field Items, Sector 7 Train Graveyard Item bit mask (LBS) (applied when you pick them up). | |||||||||||
0x0BD4 | 1 byte | Item bit mask (LBS)(applied when you pick them up).
Field Item / Materia | |||||||||||
0x0BD5 | 1 byte | Materia Cave masks (applied when you pick up the corresponding Materia). 0x01: Mime, 0x02: HP<->MP, 0x04: Quadra Magic, 0x08: KOTR | |||||||||||
0x0BD6 | 14 bytes | z_10 Unknown | |||||||||||
0x0BD7 z_10[1] |
1 byte | Item masks (applied when you pick them up). 0x10: Chaos & Death Penalty, others are unknown | |||||||||||
0x0BDC z_10[6] |
1 byte | Field Items, Sector 7 Wall Market and Shinra HQ Item bit mask (LBS) (applied when you pick them up). | |||||||||||
0x0BDD z_10[7] |
1 byte | Field Items, Shinra HQ Item bit mask (LBS) (applied when you pick them up). | |||||||||||
0x0BE4 | 8 bytes | Key items [see Key Item List] | |||||||||||
0x0BEC | 8 bytes | z_11 Unknown | |||||||||||
0x0BEF z_11[3] |
1 byte | Items mask, Chocobo Farm (LBS)(applied when you take the item). Bit=0(Item in field), Bit=1(Item taken). | |||||||||||
0x0BF4 | 1 byte | Aeris battle love points | |||||||||||
0x0BF5 | 1 byte | Tifa battle love points | |||||||||||
0x0BF6 | 1 byte | Yuffie battle love points | |||||||||||
0x0BF7 | 1 byte | Barret battle love points | |||||||||||
0x0BF8 | 1 bytes | z_12 Unknown | |||||||||||
0x0BF9 | 1 byte | Rating for Penned Chocobo Number 1 (01: Wonderful -> 08: Worst) | |||||||||||
0x0BFA | 1 byte | Rating for Penned Chocobo Number 2 | |||||||||||
0x0BFB | 1 byte | Rating for Penned Chocobo Number 3 | |||||||||||
0x0BFC | 1 byte | Rating for Penned Chocobo Number 4 | |||||||||||
0x0BFD | 2 bytes | z_13 Unknown | |||||||||||
0x0BFF | 3 bytes | Ultimate Weapon's remaining HP | |||||||||||
0x0C02 | 28 bytes | z_14 Unknown | |||||||||||
0x0C02 z_14[0] |
1 byte | Field Chocobo rating? | |||||||||||
0x0C03 z_14[1] |
1 byte | Field Chocobo rating? | |||||||||||
0x0C04 z_14[2] |
1 byte | Field Chocobo rating? | |||||||||||
0x0C05 z_14[3] |
1 byte | Field Chocobo rating? | |||||||||||
0x0C1E | 1 bytes | Needs more research. (bit=0: show tutorial. bit=1: hide tutorial.) 0x01: unknown | |||||||||||
0x0C1F | 1 bytes | Weapons Killed 0x8:Ruby 0x10:Emerald (more?) | |||||||||||
0x0C20 | 4 bytes | z_15 Unknown | |||||||||||
0x0C20 z_15[0] |
1 byte | Which Chocobo was taken out from the stable. 00 / 01 - 06 Which stable's Chocobo was taken out. The stable is displayed empty, but still occupied. 00: Chocobo can be taken out even if another Chocobo is exist on world map. - (* Glitch) Not 00: Chocobo cannot be taken out even if no Chocobo is exist on world map. | |||||||||||
0x0C21 z_15[1] |
1 byte | Riding off wild chocobo dialog options. 0x01 Enter direction to Chocobo Farm & Show send/release Wild Chocobo option when riding off. ON: Right of ranch / Show option OFF: In front of cage / Hide option Set to "ON" after buying chocobo stable. | |||||||||||
0x0C22 z_15[2] |
1 byte | Chocobo display value on world map (LBS). Bit=0(Disabled), Bit=1(Enabled). | |||||||||||
0x0C23 z_15[3] |
1 byte | Vehicle display value on world map (LBS). Note: if disk is different than 1, buggy is invisible. | |||||||||||
0x0C24 | 97 bytes | z_16 Unknown | |||||||||||
0x0C44 z_16[32] |
1 byte | Progress items, Wallmarket (LBS). Bit=0(Item not obtained), Bit=1(Item obtained). | |||||||||||
0x0C45 z_16[33] |
1 byte | Progress items, Wallmarket (LBS). Bit=0(Item not obtained), Bit=1(Item obtained). | |||||||||||
0x0C46 z_16[34] |
1 byte | Progress items, Wallmarket (LBS). Bit=0(Item not obtained), Bit=1(Item obtained). | |||||||||||
0x0C48 z_16[36] |
1 byte | Field Objects, Sector 7 Train Graveyard (LBS) (so far) Bit=0(Original Position), Bit=1(Moved). | |||||||||||
0x0C49 z_16[37] |
1 byte | Field Items, Sector 7 Wall Market Items bit mask (LBS) | |||||||||||
0x0C4A z_16[38] |
1 byte | Number of Fort Condor Battles Fought | |||||||||||
0x0C4B z_16[39] |
1 byte | Number of Fort Condor Battles Won | |||||||||||
0x0C58 z_16[52] |
2 bytes | Fort Condor Funds | |||||||||||
0x0C5B z_16[55] |
1 byte | Conversations mask (LBS)(applied when you speak). Bit=0(Not spoken to), Bit=1(Spoken to). | |||||||||||
0x0C84 z_16[96] |
1 byte | Keeps track of which Shinra floors are unlocked (By picking keycards). Values still unknown.(255 all doors opened when set manualy) | |||||||||||
0x0C85 | 1 byte | Mission 1st reactor flags. 0x01: elevator on top floor. 0x08: 1st door opened. 0x10: 2nd door opened. 0x20: Jessie free from stuck. 0x40: bomb set. 0x80: set if time is out for gameover check. | |||||||||||
0x0C86 | 1 byte | Mission 1st reactor flags. 0x02: elevator door opened. 0x04: scrolled at map init to show reactor. | |||||||||||
0x0C87 | 29/45 bytes | z_17 Unknown[0-28] First 29 bytes of 45 (ENDS AT 0x0CB3 16 Bytes into next bank) |
Save Memory Bank 3/4
Offset | Length | Description |
---|---|---|
0x0CA4 | 16/45 Bytes | z_17 Unknown[29-44] Last 16 bytes of 45 |
0x0CB4 | 1 byte | Aeris In Church progression (document this better) |
0x0CB5 | 49 Bytes | z_18 Unknown |
0x0CE6 | 1 byte | Escape from 1st reactor progress. 0x01: after scroll at start of map MD8_2 (maybe unneded). 0x02: after people panic on MD8_3 is over to never show it again. |
0x0CE7 | 7 Bytes | z_19 Unknown |
0x0CEE | 2 bytes | Party GP (0-10000) |
0x0CF0 | 12 Bytes | z_20 Unknown |
0x0CF3 z_20[3] |
1 Byte | Battle Square Special Dialog Progression {0x00 init, 0x10 :no text, 0xF0:new special fight} |
0x0CF4 z_20[4] & Z_20[5] |
2 Bytes | Battle Square Battle Points |
0x0CFC | 1 byte | Number of chocobo stables owned |
0x0CFD | 1 byte | Number of occupied stables |
0x0CFE | 1 Byte | z_21 Unknown |
0x0CFF | 1 byte | Chocobo Stables Occupied Mask. LSB 1 2 3 4 5 6 x x MSB Stable #) Chocobo's in stables. 1=0ccupied |
0x0D00 | 1 byte | Chocobos who can't mate LSB 1 2 3 4 5 6 x x MSB (Stable #).The Chocobo Was Just Born or has Recently Mated.1=can't mate |
0x0D01 | 40 Bytes | z_22 Unknown |
0x0D13 z_22[18] |
1 byte | Aeris flower quest progress. 0x01: if we buy flower from Aeris. |
0x0D23 z_22[34] |
1 byte | Current room in TUNNEL_1. From 1 to 6. If less then 1 then we go to TUNNEL_3. If 6 then to TUNNEL_2. Used instead of duplicating tunnel rooms. Start room set during mission 5 reactor train minigame. |
0x0D24 z_22[35] |
1 byte | Conversations mask, Kalm (LBS)(applied when you speak to someone). Bit=0(Not spoken to), Bit=1(Spoken to). |
0x0D26 z_22[37] |
1 byte | Conversations mask, Reactor under the plate (LBS)(applied when you speak). Bit=0(Not spoken to), Bit=1(Spoken to). |
0x0D27 z_22[38] |
1 byte | Conversations mask, Reactor under the plate (LBS)(applied when you speak). Bit=0(Not spoken to), Bit=1(Spoken to). |
0x0D29 | 1 Byte | Yuffie can be found in the forests? (LSB only) others used? |
0x0D2A | 28 Bytes | z_23 Unknown |
0x0D44 z_23[26] |
1 byte | Conversations mask, Reactor under the plate (LBS). Bit=0(NOT Activated/Received/Spoken to), Bit=1(Activated/Received/Spoken to). |
0x0D46 | 1 byte | Don's Mission Progress (more needed here) |
0x0D47 | 31 Bytes | z_24 Unknown |
0x0D47 z_24[0] |
1 byte | Conversations mask, Shinra HQ (LBS)(applied when you speak). Bit=0(Not spoken to), Bit=1(Spoken to). |
0x0D49 z_24[2] |
1 byte | Conversations mask, Shinra HQ (LBS)(applied when you speak). Bit=0(Not spoken to), Bit=1(Spoken to). |
0x0D4A z_24[3] |
1 byte | Conversations mask, Shinra HQ (LBS)(applied when you speak). Bit=0(Not spoken to), Bit=1(Spoken to). |
0x0D4C z_24[5] |
1 byte | Conversations mask, Shinra HQ (LBS)(applied when you speak). Bit=0(Not spoken to), Bit=1(Spoken to). |
0x0D50 z_24[9] |
1 byte | Items mask, Shinra HQ (LBS)(applied when you speak). Bit=0(Item on floor), Bit=1(Item taken). |
0x0D52 z_24[11] |
2 bytes | Bits kept for the doors at floor 63, Shinra HQ (LBS)(applied when you speak). Bit=0(Door opened), Bit=1(Door closed). |
0x0D55 z_24[14] |
1 byte | Item mask, Shinra HQ (LBS)(applied when you speak). Bit=0(Item on floor), Bit=1(Item taken). |
0x0D56 z_24[15] |
1 byte | Bits kept for some events on floor 63, Shinra HQ (LBS)(Really needs to be investigated). Bit=0(Door opened), Bit=1(Door closed). |
0x0D57 z_24[16] |
1 byte | Conversations mask, Shinra HQ (LBS)(applied when you speak). Bit=0(Not spoken to), Bit=1(Spoken to). |
0x0D58 z_24[17] |
1 byte | Conversations mask, Shinra HQ (LBS)(applied when you speak). Bit=0(Not spoken to), Bit=1(Spoken to). |
0x0D59 z_24[18] |
1 byte | Conversations mask, Shinra HQ (LBS)(applied when you speak). Bit=0(Not spoken to), Bit=1(Spoken to). |
0x0D5D z_24[22] |
1 byte | Conversations mask, Shinra HQ (LBS)(applied when you speak). Bit=0(Not spoken to), Bit=1(Spoken to). |
0x0D66 | 1 byte | Turtle Paradise Flyers Seen LSB 1 2 3 4 5 6 x x MSB (flyer#) 1=seen
0x01: Sector 7 Slums |
0x0D67 | 12 Bytes | z_25 Unknown |
0x0D73 | 1 byte | Yuffie Regulary. Has the character entered the party regulary? For example Yuffie further appears in the forest if this option is off. 0x6E: Yes; 0x6F: No |
0x0D74 | 15 Bytes | z_26 Unknown |
0x0D74 z_26[0] |
1 byte | MDS7PLR1 event flags. 0x01: when everyone run to hideout. |
0x0D75 z_26[1] |
1 byte | Conversations mask, MDS7 (LBS)(applied when you speak). Bit=0(Not spoken to), Bit=1(Spoken to). The value inside [] is the hex value of the entire byte. |
0x0D76 z_26[2] |
1 byte | Conversations mask, MDS7 (LBS)(applied when you speak). Bit=0(Not spoken to), Bit=1(Spoken to). The value inside [] is the hex value of the entire byte. |
0x0D77 z_26[3] |
1 byte | Conversations mask, MDS7 (LBS)(applied when you speak). Bit=0(Not spoken to), Bit=1(Spoken to). The value inside [] is the hex value of the entire byte. |
0x0D78 z_26[4] |
1 byte | Conversations mask, MDS7 (LBS)(applied when you speak). Bit=0(Not spoken to), Bit=1(Spoken to). The value inside [] is the hex value of the entire byte. |
0x0D79 z_26[5] |
1 byte | Conversations mask, MDS7 (LBS)(applied when you speak). Bit=0(Not spoken to), Bit=1(Spoken to). The value inside [] is the hex value of the entire byte. |
0x0D7A z_26[6] |
1 byte | Conversations mask, MDS7 (LBS)(applied when you speak). Bit=0(Not spoken to), Bit=1(Spoken to). The value inside [] is the hex value of the entire byte. |
0x0D7B z_26[7] |
1 byte | Items mask, Training room at sector 5 (LBS)(applied when you speak). Bit=0(Item on floor), Bit=1(Item taken). |
0x0D7C z_26[8] |
1 byte | MDS7ST3 event flags. 0x01: when everyone start run to hideout. |
0x0D83 | 1 byte | Midgard train flags. 0x01: when we talk to Biggs on way to sector 7. 0x02: when we talk to Wedge twice on way to sector 7. 0x04: when talk to Jessie, before look at map. 0x10: this bit is checked on ROOTMAP, though it doesn't use ingame. |
0x0D84 | 32/64 Bytes | z_27 Unknown[0-31] First 32 bytes of 64 (ENDS AT 0x0DC3 32 Bytes into next bank) |
0x0D90 z_27[12] |
1 byte | Event flags inside Junon. 0x01: |
Save Memory Bank B/C
Offset | Length | Description |
---|---|---|
0x0DA4 | 32/64 Bytes | z_27 Unknown[32-63] Last 32 bytes of 64 |
0x0DC4 | 16 bytes | Chocobo slot 1 [See Below for Chocobo Slot format] |
0x0DD4 | 16 bytes | Chocobo slot 2 |
0x0DE4 | 16 bytes | Chocobo slot 3 |
0x0DF4 | 16 bytes | Chocobo slot 4 [Slot 5 and 6 are located at 0x1084 - 0x10A3] |
0x0E04 | 13 Bytes | z_28 Unknown |
0x0E11 | 2 Byte | G-Bike Minigame High Score |
0x0E13 | 4 Bytes | Fastest Time For Snowboard Beginner Course stored in Msec 3bytes byte[0] unused |
0x0E17 | 4 Bytes | Fastest Time For Snowboard Expert Course stored in Msec 3bytes byte[0] unused |
0x0E1B | 4 Bytes | Fastest Time For Snowboard Crazy Course stored in Msec 3bytes byte[0] unused |
0x0E1F | 1 Byte | UnSaved Snowboard MIni Game Temp Var. |
0x0E20 | 1 Byte | HighScore For Snowboard Beginner Course |
0x0E21 | 1 Byte | HighScore For Snowboard Expert Course |
0x0E22 | 1 Byte | HighScore For Snowboard Crazy Course |
0x0E23 | 1 Byte | UnSaved Snowboard MIni Game Temp Var |
0x0E24 | 2 bytes | 2nd rank at RollerCoaster Shooter |
0x0E26 | 2 bytes | 3rd rank at RollerCoaster Shooter |
0x0E28 | 17 Bytes | z_29 Unknown |
0x0E29 z_29[1] |
1 byte | Chocobo breeding tutorial (taught by the Chocobo Sage) Progression Variable |
0x0E2A z_29[2] |
2 bytes | Number of battles to reach in order to unlock the next part of the Chocobo breeding tutorial |
0x0E33 z_29[11] |
1 byte | Lucrecia's Cave sidequest Progression Variable |
0x0E35 z_29[13] |
2 bytes | Lucrecia's Cave sidequest: Number of battles to get past in order to unlock Chaos & Death Penalty |
0x0E39 | 2 bytes | 1st rank at RollerCoaster Shooter |
0x0E3C | 105 Bytes | z_30 Unknown |
Save Memory Bank D/E
Offset | Length | Description |
---|---|---|
0x0EA4 | 1 byte | Which game-play Disc is needed |
0x0EA5 | 1 byte | z_31 Unknown Data |
0x0EA6 | 1 Byte | Start Of Bombing Mission (0x14=Yes, 0x56=No) |
0x0EA7 | 3 bytes | z_32 Unknown |
0x0EAA | 2 Bytes | Step counter. Used in great glacier to count the steps until passing out and resetted whenever you enter it. Value to pass out = 544 |
0x0EAC | 22 bytes | z_33 Unknown |
0x0EC2 | 1 byte | Field pointers mask (hand over party leader's head + red and green arrows) 0x00: Inactive 0x02: Active |
0x0EC3 | 1 byte | z_34 Unknown. |
0x0EC4 | 6 bytes | Name of Chocobo 1 (FF Text format) |
0x0ECA | 6 bytes | Name of Chocobo 2 (FF Text format) |
0x0ED0 | 6 bytes | Name of Chocobo 3 (FF Text format) |
0x0ED6 | 6 bytes | Name of Chocobo 4 (FF Text format) |
0x0EDC | 6 bytes | Name of Chocobo 5 (FF Text format) |
0x0EE2 | 6 bytes | Name of Chocobo 6 (FF Text format) |
0x0EE8 | 2 bytes | Stamina of Chocobo 1 |
0x0EEA | 2 bytes | Stamina of Chocobo 2 |
0x0EEC | 2 bytes | Stamina of Chocobo 3 |
0x0EEE | 2 bytes | Stamina of Chocobo 4 |
0x0EF0 | 2 bytes | Stamina of Chocobo 5 |
0x0EF2 | 2 bytes | Stamina of Chocobo 6 |
0x0EF4 | 1 byte | Vincent Regularly/Change Submarine Color. (Bit-mask) 0x01: |
0x0EF5 | 23 bytes | z_35 Unknown |
0x0EF6 z_35[1] |
1 byte | Vehicle Submarine 0x01: |
0x0EFD z_35[8] |
1 byte | Vehicle Enabler |
0x0EFF z_35[10] |
1 byte | Save flag. 0x02: set when we in save (menu or point? please check) and unset when out |
0x0F0C | 24 bytes | Name of location (FF Text format) |
0x0F24 | 5 bytes | z_36 Unknown |
0x0F29 | 1 bytes | Save on the world map - Tutorial seen (To be Checked) 0x3B: Seen 0x33: Not Seen |
0x0F2A | 50 bytes | z_37 Unknown |
0x0F2A z_37[0] |
1 byte | Needs more research.
0x01: |
0x0F2B z_37[1] |
1 bytes | 0x20: World map Ruby Weapon form. bit=0: Small Form (before first encounter). bit=1: Big Form (after first encounter). |
0x0F3A z_37[16] |
1 bytes | Rand number between 0,1,2. Is set when you change field map. ex: enter a town. |
0x0F5C | 3 bytes | Party leader's coordinates on world map: Party leader X position on the world map (X coord). Value from 0 up to 295000 000000: 0x000000 |
0x0F5F | 1 bytes | Party leader viewing direction angle on the world map. Value from 0 up to 255 to cover 0 - 359° |
0x0F60 | 3 bytes | Party leader Y position on the world map (Y coord). Value from 1 up to 230000 000001: 0x01003C |
0x0F63 | 1 bytes | Party leader Z altitude on the world map (Z coord). Input value from -128 up to 127 are allowed (0 = Mean Sea Level) |
0x0F64 | 8 bytes | Caught Wild Chocobo's coordinates on world map |
0x0F6C | 8 bytes | Tiny Bronco/Chocobo's coordinates on world map |
0x0F74 | 8 bytes | Buggy/Highwind's coordinates on world map |
0x0F7C | 8 bytes | Submarine/???'s coordinates on world map |
0x0F84 | 8 bytes | Diamond=>Ultimate=>Ruby Weapon's coordinates on world map (ruby is bound To the desert) |
0x0F8C | 2 bytes | 1st Snow Pole X Coordinate. |
0x0F8E | 2 bytes | 1st Snow Pole Y Coordinate. |
0x0F90 | 2 bytes | 2nd Snow Pole X Coordinate. |
0x0F92 | 2 bytes | 2nd Snow Pole Y Coordinate. |
0x0F94 | 2 bytes | 3ed Snow Pole X Coordinate. |
0x0F96 | 2 bytes | 3ed Snow Pole Y Coordinate. |
0x0F98 | 12/236 bytes | z_38 Unknown[0-11] First 12 bytes of 236 (ENDS AT 0x1083 224 Bytes into next bank) |
0x0F9C z_38[4] |
1 bytes | Angle of the world. The viewing direction of the camera onto the world map. For top-view (ca. 45°) this value should be 0. |
0x0F9D z_38[5] |
1 bytes | Top-view (ca. 45°). Determines the camera's position. |
0x0F9C z_38[4] |
2 bytes | Camera angle and rotation of normal world map. 00 00 - FF 0F: Map rotation angle. xx yx: if y > 0, y will be changed to 0. (Source: Asa. Data Collision) |
0x0F9F z_38[6] |
2 bytes | Snow Pole Number/Where address will be overwritten by next pole (cycling 00, 01, 02, 00, 01, 02... ) 00: 1st pole address |
0x0FA0 z_38[8] |
1 bytes | Wild Chocobo Type. Value is set when Chocobo is caught and used after Chocobo is sent to cage. |
0x0FA1 z_38[9] |
1 bytes | Riding Byte. Index is the byte's value and not the bit-mask. |
0x0FA3 z_38[11] |
1 bytes | Unknown. It seems this value is mixture of Number of Snow Poles, Party direction and walking steps or coordinates.
Value will be ignored when loading slot. |
Save Memory Bank 7/F
Offset | Length | Description |
---|---|---|
0x0FA4 | 224/236 Bytes | Unknown z_38[12-235] Last 224 bytes of 236 |
0x0FA6 z_38[14] |
1 byte | World map camera & map display Add two values (one from camera, one from map) and set this byte. Camera: Aerial(00); Closeup(20) |
0x0FAB z_38[19] |
1 byte | If not 0x00, game crashes |
0x0FC4 z_38[44] |
2 bytes | Fields items mask. 0x0001: first potion on MD1STIN. 0x0002: second potion on MD1STIN. 0x0004: potion at NMKIN3. 0x0008: phoenix down on NKMIN1. |
0x0FF1 z_38[89] |
1 byte | On Buggy vehicle. Specifies if a character is on a Buggy. Only if a Buggy is present. 0x0E: On; 0x0C: Off |
0x0FF8 z_38[96] |
1 byte | Items mask, Mythril Mine (LBS)(applied when you take the item). Bit=0(Item in field), Bit=1(Item taken). |
0x0FF9 z_38[97] |
1 byte | Items mask, Kalm (LBS)(applied when you take the item). Bit=0(Item in field), Bit=1(Item taken). |
0x0FFB z_38[99] |
1 byte | Kalm Traveler rewards visibility (each bit set back to 0 when picked up) Guide Book (0x01); Master Command(0x02); Master Magic (0x04); Master Summon (0x08); Gold Chocobo (0x10) |
0x0FFC z_38[100] |
1 byte | Items mask, Kalm (LBS)(applied when you take the item). Bit=0(Item in field), Bit=1(Item taken). |
0x0FFD z_38[101] |
1 byte | Items mask, Kalm (LBS)(applied when you take the item). Bit=0(Item in field), Bit=1(Item taken). |
0x0FFE z_38[102] |
1 byte | Items mask, Mythril Mine (LBS)(applied when you take the item). Bit=0(Item in field), Bit=1(Item taken). |
0x101E z_38[134] |
1 byte | Items mask, Junon (LBS)(applied when you take the item). Bit=0(Item in field), Bit=1(Item taken). |
0x1030 z_38[152] |
1 byte | Field screen rain switch (non-zero to turn on rain effect) |
0x1084 | 16 bytes | Chocobo slot 5 |
0x1094 | 16 bytes | Chocobo slot 6 |
Character Record
Offset | Length | Description |
---|---|---|
0x00 | 1 byte | Character ID - Ingored If Not Cait / Vincent??? |
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) Game's Naming Boxes Cap you At 9 Chars |
0x1C | 1 byte | Equipped weapon |
0x1D | 1 byte | Equipped armor |
0x1E | 1 byte | Equipped accessory |
0x1F | 1 byte | Character flags - 0x10-Sadness, 0x20-Fury |
0x20 | 1 byte | Char order - 0xFF-Normal, 0xFE-Back row |
0x21 | 1 byte | Level progress bar (0-63) Games Gui Hides Values <4, 4-63 are visible as "progress" |
0x22 | 2 bytes | Learned limit skills 0x0001: Limit Lv. 1-1 |
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 | 4 bytes | Weapon materia slot number 1 |
0x44 | 4 bytes | Weapon materia slot number 2 |
0x48 | 4 bytes | Weapon materia slot number 3 |
0x4C | 4 bytes | Weapon materia slot number 4 |
0x50 | 4 bytes | Weapon materia slot number 5 |
0x54 | 4 bytes | Weapon materia slot number 6 |
0x58 | 4 bytes | Weapon materia slot number 7 |
0x5C | 4 bytes | Weapon materia slot number 8 |
0x60 | 4 bytes | Armor materia slot number 1 |
0x64 | 4 bytes | Armor materia slot number 2 |
0x68 | 4 bytes | Armor materia slot number 3 |
0x6C | 4 bytes | Armor materia slot number 4 |
0x70 | 4 bytes | Armor materia slot number 5 |
0x74 | 4 bytes | Armor materia slot number 6 |
0x78 | 4 bytes | Armor materia slot number 7 |
0x7C | 4 bytes | Armor materia slot number 8 |
0x80 | 4 bytes | EXP to next level |
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 | 1: female) |
0xF | 1 byte | Type (Yellow, Green, Blue, Black, Gold) |
Save Item List
Each item in the item list is stored as a word value with the quantity, expressed as a 7-bit value, concatenated with the item's index, expressed as a 9-bit value between the range of 0-320.
In Binary:
QQQQQQQXXXXXXXXX
Where X is the index and Q is the quantity.
There are a total of 320 item slots in the save map and a total of 320 objects that are stored there, some of which are dummy items. The objects are indexed like this:
Indexes 0 - 127: Items
Indexes 128 - 255: Weapons
Indexes 256 - 287: Armors
Indexes 288 - 319: Accessories
Quantity is limited (by the menu mechanics) to 99 since there are only two characters available in the item menu to show quantity. A Graphical "glitch" occurs in the ten's digit when quantity exceeds that number. The menu only checks the current quantity to determine if the value can increase. The quantity will not decrease unless an item is used or sold so forcing the quantity to exceed this number will have no negative effects.
Save Materia List
Materia is stored as a single-byte ID followed by the amount of AP on that instance of Materia stored as an unsigned 24-bit integer.eskill materia does not use the ap value, but instead the 24 bits as switches for each skill that can be learned. For every materia ap =0xFFFFFF when mastered
ID | Name | Type |
---|---|---|
0x00 | MP Plus | Independent |
0x01 | HP Plus | Independent |
0x02 | Speed Plus | Independent |
0x03 | Magic Plus | Independent |
0x04 | Luck Plus | Independent |
0x05 | EXP Plus | Independent |
0x06 | Gil Plus | Independent |
0x07 | Enemy Away | Independent |
0x08 | Enemy Lure | Independent |
0x09 | Chocobo Lure | Independent |
0x0B | Long Range | Independent |
0x0C | Mega All | Independent |
0x0D | Counter Attack | Independent |
0x0E | Slash-All | Command |
0x0F | Double Cut | Command |
0x0A | Pre-emptive | Independent |
0x10 | Cover | Independent |
0x11 | Underwater | Independent |
0x12 | HP <-> MP | Independent |
0x13 | W-Magic | Command |
0x14 | W-Summon | Command |
0x15 | W-Item | Command |
0x16 | Unknown | Placeholder? |
0x17 | All | Support |
0x18 | Counter | Support |
0x19 | Magic Counter | Support |
0x1A | MP Turbo | Support |
0x1B | MP Absorb | Support |
0x1C | HP Absorb | Support |
0x1D | Elemental | Support |
0x1E | Added Effect | Support |
0x1F | Sneak Attack | Support |
0x20 | Final Attack | Support |
0x21 | Added Cut | Support |
0x22 | Steal As Well | Support |
0x23 | Quadra Magic | Support |
0x24 | Steal | Command |
0x25 | Sense | Command |
0x26 | Unknown | Placeholder? |
0x27 | Throw | Command |
0x28 | Morph | Command |
0x29 | Deathblow | Command |
0x2A | Manipulate | Command |
0x2B | Mime | Command |
0x2C | Enemy Skill | Command |
0x2D | Unknown | Placeholder? |
0x2E | Unknown | Placeholder? |
0x2F | Unknown | Placeholder? |
0x30 | Master Command | Command |
0x31 | Fire | Magic |
0x32 | Ice | Magic |
0x33 | Earth | Magic |
0x34 | Lightning | Magic |
0x35 | Restore | Magic |
0x36 | Heal | Magic |
0x37 | Revive | Magic |
0x38 | Seal | Magic |
0x39 | Mystify | Magic |
0x3A | Transform | Magic |
0x3B | Exit | Magic |
0x3C | Poison | Magic |
0x3D | Demi | Magic |
0x3E | Barrier | Magic |
0x3F | Unknown | Placeholder? |
0x40 | Comet | Magic |
0x41 | Time | Magic |
0x42 | Unknown | Placeholder? |
0x43 | Unknown | Placeholder? |
0x44 | Destruct | Magic |
0x45 | Contain | Magic |
0x46 | FullCure | Magic |
0x47 | Shield | Magic |
0x48 | Ultima | Magic |
0x49 | Master Magic | Magic |
0x4A | Choco/Mog | Summon |
0x4B | Shiva | Summon |
0x4C | Ifrit | Summon |
0x4D | Ramuh | Summon |
0x4E | Titan | Summon |
0x4F | Odin | Summon |
0x50 | Leviathan | Summon |
0x51 | Bahamut | Summon |
0x52 | Kujata | Summon |
0x53 | Alexander | Summon |
0x54 | Phoenix | Summon |
0x55 | Neo Bahamut | Summon |
0x56 | Hades | Summon |
0x57 | Typhoon | Summon |
0x58 | Bahamut ZERO | Summon |
0x59 | Knights of Round | Summon |
0x5A | Master Summon | Summon |
0xFF | Empty Slot | NONE |
KERNEL.BIN Section 4 Entry
During game initialization, section 4 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 0x0B93).
Documentation Notes & Format
Format:
Bit mask: Bit description [Hex byte value] {Field Keyword}
Example:
0x04: Set to 1 if we choose no drink when talking to tifa. [0x0F] {MDS7PB_1}
Bit mask: Is the bit position number in hex. Bit7(0x80)|Bit6(0x40)|Bit5(0x20)|Bit4(0x10)|Bit3(0x08)|Bit2(0x04)|Bit1(0x02)|Bit0(0x01)
Note: We use LBS 0 bit numbering.
Bit description: What bit does.
Hex byte value: The Byte's value in hex when the bit change.(optional)
Field Keyword: Field name code.