Difference between revisions of "Main Page"
my_wiki>Vegetass4 m (→Save Memory Bank 3/4) |
my_wiki>Sithlord48 (→The Savemap) |
||
Line 1: | Line 1: | ||
− | === The Savemap === | + | === 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) | |
− | 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. | 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. | ||
− | + | ||
− | {| border="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse;" | + | {| border="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse; width: 600px;" |
|+'''Table 1: FF7 Save Slot''' | |+'''Table 1: FF7 Save Slot''' | ||
! style="background:rgb(204,204,204)" align="center" | Offset | ! style="background:rgb(204,204,204)" align="center" | Offset | ||
Line 15: | Line 13: | ||
| colspan="2" | Checksum ([http://forums.qhimm.com/index.php?topic=4211.msg60545#msg60545 how to generate]) | | colspan="2" | Checksum ([http://forums.qhimm.com/index.php?topic=4211.msg60545#msg60545 how to generate]) | ||
|- | |- | ||
− | | 0x0002 | + | |style="background:rgb(255,205,154)"| 0x0002 |
− | | 2 bytes | + | |style="background:rgb(255,205,154)"| 2 bytes |
− | | colspan="2" | Unknown | + | |style="background:rgb(255,205,154)" colspan="2" | z_1 Unknown (Always 0x00?) |
|- | |- | ||
| 0x0004 | | 0x0004 | ||
Line 88: | Line 86: | ||
| 0x0054 | | 0x0054 | ||
| 132 bytes | | 132 bytes | ||
− | | colspan="2" | Character record: Cloud [see below for Character record format] | + | | colspan="2" | Character record: Cloud [see below for [[#Character_Record|Character record format]]] |
|- | |- | ||
| 0x00D8 | | 0x00D8 | ||
| 132 bytes | | 132 bytes | ||
− | | colspan="2" | Character record: Barret | + | | colspan="2" | Character record: Barret [see below for [[#Character_Record|Character record format]]] |
|- | |- | ||
| 0x015C | | 0x015C | ||
| 132 bytes | | 132 bytes | ||
− | | colspan="2" | Character record: Tifa | + | | colspan="2" | Character record: Tifa [see below for [[#Character_Record|Character record format]]] |
|- | |- | ||
| 0x01E0 | | 0x01E0 | ||
| 132 bytes | | 132 bytes | ||
− | | colspan="2" | Character record: Aeris | + | | colspan="2" | Character record: Aeris [see below for [[#Character_Record|Character record format]]] |
|- | |- | ||
| 0x0264 | | 0x0264 | ||
| 132 bytes | | 132 bytes | ||
− | | colspan="2" | Character record: Red XIII | + | | colspan="2" | Character record: Red XIII [see below for [[#Character_Record|Character record format]]] |
|- | |- | ||
| 0x02E8 | | 0x02E8 | ||
| 132 bytes | | 132 bytes | ||
− | | colspan="2" | Character record: Yuffie | + | | colspan="2" | Character record: Yuffie [see below for [[#Character_Record|Character record format]]] |
|- | |- | ||
| 0x036C | | 0x036C | ||
| 132 bytes | | 132 bytes | ||
− | | colspan="2" | Character record: Cait Sith (or Young Cloud) | + | | colspan="2" | Character record: Cait Sith (or Young Cloud) [see below for [[#Character_Record|Character record format]]] |
|- | |- | ||
| 0x03F0 | | 0x03F0 | ||
| 132 bytes | | 132 bytes | ||
− | | colspan="2" | Character record: Vincent (or Sephiroth) | + | | colspan="2" | Character record: Vincent (or Sephiroth) [see below for [[#Character_Record|Character record format]]] |
|- | |- | ||
| 0x0474 | | 0x0474 | ||
| 132 bytes | | 132 bytes | ||
− | | colspan="2" | Character record: Cid | + | | colspan="2" | Character record: Cid [see below for [[#Character_Record|Character record format]]] |
|- | |- | ||
| 0x04F8 | | 0x04F8 | ||
Line 134: | Line 132: | ||
| colspan="2" | Party member in slot 3 | | colspan="2" | Party member in slot 3 | ||
|- | |- | ||
− | | 0x04FB | + | |style="background:rgb(255,205,154)"| 0x04FB |
− | | 1 byte | + | |style="background:rgb(255,205,154)"| 1 byte |
− | | colspan="2" | 0xFF | + | |style="background:rgb(255,205,154)" colspan="2" | z_2 Unknown (Always 0xFF?) |
|- | |- | ||
| 0x04FC | | 0x04FC | ||
Line 150: | Line 148: | ||
| colspan="2" | Materia stolen by Yuffie, 4 bytes per materia, 48 materia max [See [[#Save_Materia_List|save materia list]] ] | | colspan="2" | Materia stolen by Yuffie, 4 bytes per materia, 48 materia max [See [[#Save_Materia_List|save materia list]] ] | ||
|- | |- | ||
− | |style="background:rgb(255, | + | |style="background:rgb(255,205,154)" | 0x0B5C |
− | |style="background:rgb(255, | + | |style="background:rgb(255,205,154)" | 32 bytes |
− | |style="background:rgb(255, | + | |style="background:rgb(255,205,154)" colspan="2" | z_3 Unknown (Always 0xFF?) |
|- | |- | ||
| 0x0B7C | | 0x0B7C | ||
Line 166: | Line 164: | ||
| colspan="2" | Countdown Timer (HH:MM:SS) | | colspan="2" | Countdown Timer (HH:MM:SS) | ||
|- | |- | ||
− | |style="background:rgb(255,255,204)" | | + | |style="background:rgb(255,205,154); border-bottom: 1px solid #FF9A33" | 0x0B87 |
− | |style="background:rgb(255,255,204)" | | + | |style="background:rgb(255,205,154); border-bottom: 1px solid #FF9A33" | 13 bytes |
− | |style="background:rgb(255,255,204)" colspan="2" | Unknown ( | + | |style="background:rgb(255,205,154); border-bottom: 1px solid #FF9A33" colspan="2" | z_4 Unknown |
+ | |- | ||
+ | |style="background:rgb(255,205,154); border-top: 1px dashed" | 0x0B88<br />z_4[1] | ||
+ | |style="background:rgb(255,255,204); border-top: 1px dashed; border-left: 1px dashed; border-right: 1px dashed" | 1 byte | ||
+ | |style="background:rgb(255,255,204); border-top: 1px dashed" colspan="2" | Game timer / ~ 10 times faster that 0x0B89 | ||
+ | |- | ||
+ | |style="background:rgb(255,205,154); border-top: 1px dashed" | 0x0B89<br />z_4[2] | ||
+ | |style="background:rgb(255,255,204); border-top: 1px dashed; border-left: 1px dashed; border-right: 1px dashed" | 1 byte | ||
+ | |style="background:rgb(255,255,204); border-top: 1px dashed" colspan="2" | Game timer / from 0 to 255 in one sec | ||
+ | |- | ||
+ | |style="background:rgb(255,205,154); border-top: 1px dashed" | 0x0B8A<br />z_4[3] | ||
+ | |style="background:rgb(255,255,204); border-top: 1px dashed; border-left: 1px dashed; border-right: 1px dashed" | 2 bytes | ||
+ | |style="background:rgb(255,255,204); border-top: 1px dashed" colspan="2" | Unknown 0x00 padding? | ||
+ | |- | ||
+ | |style="background:rgb(255,205,154); border-top: 1px dashed" | 0x0B8C<br />z_4[5] | ||
+ | |style="background:rgb(255,255,204); border-top: 1px dashed; border-left: 1px dashed; border-right: 1px dashed" | 1 byte | ||
+ | |style="background:rgb(255,255,204); border-top: 1px dashed" colspan="2" | Same value that 0x0B88. Game timer cs(Centiseconds???) | ||
+ | |- | ||
+ | |style="background:rgb(255,205,154); border-top: 1px dashed" | 0x0B8D<br />z_4[6] | ||
+ | |style="background:rgb(255,255,204); border-top: 1px dashed; border-left: 1px dashed; border-right: 1px dashed" | 1 byte | ||
+ | |style="background:rgb(255,255,204); border-top: 1px dashed" colspan="2" | Same value that 0x0B89. Game timer dc(Deciseconds???) | ||
+ | |- | ||
+ | |style="background:rgb(255,205,154); border-top: 1px dashed" | 0x0B8E<br />z_4[7] | ||
+ | |style="background:rgb(255,255,204); border-top: 1px dashed; border-left: 1px dashed; border-right: 1px dashed" | 2 bytes | ||
+ | |style="background:rgb(255,255,204); border-top: 1px dashed" colspan="2" | Unknown 0x00 padding? | ||
|- | |- | ||
| 0x0B94 | | 0x0B94 | ||
Line 178: | Line 200: | ||
| colspan="2" | Current location | | colspan="2" | Current location | ||
|- | |- | ||
− | |style="background:rgb(255, | + | |style="background:rgb(255,205,154)" | 0x0B98 |
− | |style="background:rgb(255, | + | |style="background:rgb(255,205,154)" | 2 bytes |
− | |style="background:rgb(255, | + | |style="background:rgb(255,205,154)" colspan="2" | z_5 Unknown |
|- | |- | ||
| 0x0B9A | | 0x0B9A | ||
| 2 bytes | | 2 bytes | ||
− | | colspan="2" | X location on | + | | colspan="2" | X location on Field map (Signed) |
|- | |- | ||
| 0x0B9C | | 0x0B9C | ||
| 2 bytes | | 2 bytes | ||
− | | colspan="2" | Y location on | + | | colspan="2" | Y location on Field map (Signed) |
|- | |- | ||
| 0x0B9E | | 0x0B9E | ||
| 2 bytes | | 2 bytes | ||
− | | colspan="2" | | + | | colspan="2" | Triangle Id of player on Field map (Unsigned) |
|- | |- | ||
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | | 0x0BA0 |
− | + | | 1 byte | |
− | | | + | | colspan="2" | Direction of Player Model on Field Map(Unsigned) |
|- | |- | ||
− | |style="background:rgb(255,205,154)" | | + | |
− | |style="background:rgb(255,205,154)" | | + | |style="background:rgb(255,205,154); border-bottom: 1px solid #FF9A33" | 0x0BA1 |
− | |style="background:rgb(255,205,154)" colspan="2" | | + | |style="background:rgb(255,205,154); border-bottom: 1px solid #FF9A33" | 3 bytes |
+ | |style="background:rgb(255,205,154); border-bottom: 1px solid #FF9A33" colspan="2" | z_6 Unknown | ||
|- | |- | ||
− | |style="background:rgb(255,205,154)" | | + | |style="background:rgb(255,205,154); border-top: 1px dashed" | 0x0BA1<br />z_6[0] |
− | |style="background:rgb(255, | + | |style="background:rgb(255,255,204); border-top: 1px dashed; border-left: 1px dashed; border-right: 1px dashed" | 1 byte |
− | |style="background:rgb(255, | + | |style="background:rgb(255,255,204); border-top: 1px dashed" colspan="2" | Field Encounter Timer: StepID/Seed ([http://forums.qhimm.com/index.php?topic=6431.msg81091#msg81091]) |
|- | |- | ||
− | |style="background:rgb(255,205,154)" | | + | |style="background:rgb(255,205,154); border-top: 1px dashed" | 0x0BA2<br />z_6[1] |
− | |style="background:rgb(255, | + | |style="background:rgb(255,255,204); border-top: 1px dashed; border-left: 1px dashed; border-right: 1px dashed" | 1 byte |
− | |style="background:rgb(255, | + | |style="background:rgb(255,255,204); border-top: 1px dashed" colspan="2" | Field Encounter Timer: Offset ([http://forums.qhimm.com/index.php?topic=9625.msg191219#msg191219]) |
|- | |- | ||
− | |style="background:rgb( | + | |style="background:rgb(205,205,154)" | 0x0BA4 |
− | |style="background:rgb( | + | |style="background:rgb(205,205,154)" | |
− | |style="background:rgb( | + | |style="background:rgb(205,205,154)" colspan="2" | [BEGINNING OF FIELD SCRIPT MEMORY [[#Save_Memory_Bank_1/2|BANK 1 (1/2)]]] |
|- | |- | ||
− | |style="background:rgb( | + | |style="background:rgb(205,205,154)" | 0x0CA4 |
− | |style="background:rgb( | + | |style="background:rgb(205,205,154)" | |
− | |style="background:rgb( | + | |style="background:rgb(205,205,154)" colspan="2" | [BEGINNING OF FIELD SCRIPT MEMORY [[#Save_Memory_Bank_3/4|BANK 2 (3/4)]]] |
+ | |- | ||
+ | |style="background:rgb(205,205,154)" | 0x0DA4 | ||
+ | |style="background:rgb(205,205,154)" | | ||
+ | |style="background:rgb(205,205,154)" colspan="2" | [BEGINNING OF FIELD SCRIPT MEMORY [[#Save_Memory_Bank_B/C|BANK 3 (B/C)]]] | ||
+ | |- | ||
+ | |style="background:rgb(205,205,154)" | 0x0EA4 | ||
+ | |style="background:rgb(205,205,154)" | | ||
+ | |style="background:rgb(205,205,154)" colspan="2" | [BEGINNING OF FIELD SCRIPT MEMORY [[#Save_Memory_Bank_D/E|BANK 4 (D/E)]]] | ||
+ | |- | ||
+ | |style="background:rgb(205,205,154)" | 0x0FA4 | ||
+ | |style="background:rgb(205,205,154)" | | ||
+ | |style="background:rgb(205,205,154)" colspan="2" | [BEGINNING OF FIELD SCRIPT MEMORY [[#Save_Memory_Bank_7/F|BANK 5 (7/F)]]] | ||
|- | |- | ||
| rowspan="2" | 0x10A4 | | rowspan="2" | 0x10A4 | ||
Line 260: | Line 292: | ||
|} | |} | ||
|- | |- | ||
− | |style="background:rgb(255, | + | |style="background:rgb(255,205,154)" | 0x10A8 |
− | |style="background:rgb(255, | + | |style="background:rgb(255,205,154)" | 48 bytes |
− | |style="background:rgb(255, | + | |style="background:rgb(255,205,154)" colspan="2" | z_39 Unknown (Always 0x00?) |
|- | |- | ||
| 0x10D8 | | 0x10D8 | ||
Line 296: | Line 328: | ||
| 0x10DC | | 0x10DC | ||
| 16 bytes | | 16 bytes | ||
− | | colspan="2" | Controller Mapping (PSX ONLY) <br | + | | colspan="2" | Controller Mapping (PSX ONLY) <br>l2,r2,l1,r1,tri,circle,cross,square,Select,?,?,Start,u,r,d,l<br>l2,r2,l1,r1,Menu,OK,Cancel,Ext,Help,?,?,Pause,u,r,d,l |
− | l2,r2,l1,r1,tri,circle,cross,square,Select,?,?,Start,u,r,d,l <br | ||
− | l2,r2,l1,r1,Menu,OK,Cancel,Ext,Help,?,?,Pause,u,r,d,l | ||
|- | |- | ||
| 0x10EC | | 0x10EC | ||
Line 304: | Line 334: | ||
| colspan="2" | Message Speed | | colspan="2" | Message Speed | ||
|- | |- | ||
− | |style="background:rgb(255, | + | |style="background:rgb(255,205,154)" | 0x10ED |
− | |style="background:rgb(255, | + | |style="background:rgb(255,205,154)" | 8 bytes |
− | |style="background:rgb(255, | + | |style="background:rgb(255,205,154)" colspan="2" | z_40 Unknown (Always 0x00?) |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|} | |} | ||
Revision as of 04:50, 17 April 2013
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 | 1 Byte | Yuffie's Initial Level | |||||||||||
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 | 9 bytes | Unknown | |||||||||||
0x0BB4 | 1 byte | Game timer (Hours) | |||||||||||
0x0BB5 | 1 byte | Game timer (Minutes) | |||||||||||
0x0BB6 | 1 byte | Game timer (Seconds) | |||||||||||
0x0BB7 | 1 byte | Game timer (Tenths) | |||||||||||
0x0BB8 | 4 bytes | Unknown (curse ring usage?) | |||||||||||
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) | |||||||||||
| |||||||||||||
0x0BD4 | 1 byte | Item masks. 0x01: Potion {MD8_3}. 0x40: Sense Materia {MDS6_2} | |||||||||||
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 | 1 bytes | Unknown | |||||||||||
0x0BD7 | 1 byte | Item masks (applied when you pick them up). 0x10: Chaos & Death Penalty, others are unknown | |||||||||||
0x0BD8 | 4 bytes | Unknown | |||||||||||
0x0BDC | 1 byte | Field Items, Sector 7 Wall Market and Shinra HQ. Item bit mask (applied when you pick them up). 0x01: Ether(Corneo's masion basement floor). | |||||||||||
0x0BDD | 1 byte | Field Items, Shinra HQ. Item bit mask (applied when you pick them up). 0x01: Fourth Midgar part. | |||||||||||
0x0BDE | 6 bytes | Unknown | |||||||||||
0x0BE4 | 8 bytes | Key items [see Key Item List] | |||||||||||
0x0BEC | 8 bytes | Unknown | |||||||||||
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 byte | 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 | Unknown | |||||||||||
0x0BFF | 3 bytes | Ultimate Weapon's remaining HP | |||||||||||
0x0C02 | 1 byte | Field Chocobo rating? | |||||||||||
0x0C03 | 1 byte | Field Chocobo rating? | |||||||||||
0x0C04 | 1 byte | Field Chocobo rating? | |||||||||||
0x0C05 | 1 byte | Field Chocobo rating? | |||||||||||
0x0C06 | 24 bytes | Unknown | |||||||||||
0x0C1E | 1 byte | Mask byte (Other masks are still to be identified on this byte) 0x04: Submarine Tutorial seen. | |||||||||||
0x0C1F | 1 bytes | Weapons Killed 0x8:Ruby 0x10:Emerald (more?) | |||||||||||
0x0C1F | 37 bytes | Unknown | |||||||||||
0x0C44 | 1 byte | Progress items, Wallmarket. 0x01: Cologne at Wallmarket | |||||||||||
0x0C45 | 1 byte | Progress items, Wallmarket. 0x08: Obtaining the dress at Wallmarket | |||||||||||
0x0C46 | 1 byte | Progress items, Wallmarket. 0x01: Disinfectant at Wallmarket | |||||||||||
0x0C47 | 1 byte | Unknown | |||||||||||
0x0C48 | 1 byte | Field Objects, Sector 7 Train Graveyard (so far) Bit=0(Original Position), Bit=1(Moved). | |||||||||||
0x0C49 | 1 byte | Field Items, Sector 7 Wall Market 0x01: Cloud see the first battery holder and figured out the idea of using a battery there... {wcrimb_1} | |||||||||||
0x0C4A | 1 byte | Number of Fort Condor Battles Fought | |||||||||||
0x0C4B | 1 byte | Number of Fort Condor Battles Won | |||||||||||
0x0C4C | 15 bytes | Unknown | |||||||||||
0x0C5B | 1 byte | Conversations mask. Bit=0(Not spoken to), Bit=1(Spoken to). | |||||||||||
0x0C5A | 42 bytes | Unknown | |||||||||||
0x0C84 | 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. | |||||||||||
0x0C86 | 1 byte | Mission 1st reactor flags. 0x02: elevator door opened. 0x04: scrolled at map init to show reactor. | |||||||||||
0x0C87 | 29 bytes | Unknown |
Save Memory Bank 3/4
Offset | Length | Description |
---|---|---|
0x0CA4 | 16 Bytes | Unknown |
0x0CB4 | 1 byte | Aeris In Church progression (document this better) |
0x0CB5 | 49 Bytes | 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 | Unknown |
0x0CEE | 2 bytes | Party GP (0-10000) |
0x0CF0 | 12 Bytes | Unknown |
0x0CFC | 1 byte | Number of chocobo stables owned |
0x0CFD | 1 byte | Number of occupied stables |
0x0CFE | 1 Bytes | 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 | 18 Bytes | Unknown |
0x0D13 | 1 byte | Aeris flower quest progress. 0x01: if we buy flower from Aeris. |
0x0D14 | 15 Bytes | Unknown |
0x0D23 | 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. |
0x0D24 | 1 byte | Conversations mask, Kalm (applied when you speak to someone). Bit=0(Not spoken to), Bit=1(Spoken to). |
0x0D25 | 1 Byte | Unknown |
0x0D26 | 1 byte | Conversations mask, Reactor under the plate (applied when you speak). Bit=0(Not spoken to), Bit=1(Spoken to). |
0x0D27 | 1 byte | Conversations mask, Reactor under the plate (applied when you speak). Bit=0(Not spoken to), Bit=1(Spoken to). |
0x0D28 | 1 Byte | Unknown |
0x0D29 | 1 Byte | Yuffie can be found in the forests? (LSB only) others used? |
0x0D2A | 3 Bytes | Unknown |
0x0D2D | 1 byte | Kalm Traveler sidequest Progression (details) bit-mask (applied when you speak). 0x08: Applied when you give him the Guide Book. |
0x0D2E | 24 Bytes | Unknown |
0x0D46 | 1 byte | Don's Mission Progress (more needed here) |
0x0D47 | 1 byte | Conversations mask, Shinra HQ (applied when you speak). Bit=0(Not spoken to), Bit=1(Spoken to). |
0x0D48 | 1 Bytes | Unknown |
0x0D49 | 1 byte | Conversations mask, Shinra HQ (applied when you speak). Bit=0(Not spoken to), Bit=1(Spoken to). |
0x0D4A | 1 byte | Conversations mask, Shinra HQ (applied when you speak). Bit=0(Not spoken to), Bit=1(Spoken to). |
0x0D4B | 1 Byte | Unknown |
0x0D4C | 1 byte | Conversations mask, Shinra HQ (applied when you speak). Bit=0(Not spoken to), Bit=1(Spoken to). |
0x0D4E | 2 Bytes | Unknown |
0x0D50 | 1 byte | Items mask, Shinra HQ (applied when you speak). Bit=0(Item on floor), Bit=1(Item taken). |
0x0D51 | 1 Byte | Unknown |
0x0D52 | 1 byte | Bits kept for the doors at floor 63, Shinra HQ(applied when you speak). Bit=0(Door opened), Bit=1(Door closed). |
0x0D53 | 1 byte | Bits kept for the doors at floor 63, Shinra HQ (applied when you speak). Bit=0(Door opened), Bit=1(Door closed). |
0x0D54 | 1 Byte | Unknown |
0x0D55 | 1 byte | Item mask, Shinra HQ (applied when you speak). Bit=0(Item on floor), Bit=1(Item taken). |
0x0D56 | 1 byte | Bits kept for the doors at floor 63, Shinra HQ (applied when you speak). Bit=0(Door opened), Bit=1(Door closed). |
0x0D57 | 1 byte | Conversations mask, Shinra HQ (applied when you speak). Bit=0(Not spoken to), Bit=1(Spoken to). |
0x0D58 | 1 byte | Conversations mask, Shinra HQ (applied when you speak). Bit=0(Not spoken to), Bit=1(Spoken to). |
0x0D59 | 1 byte | Conversations mask, Shinra HQ (applied when you speak). Bit=0(Not spoken to), Bit=1(Spoken to). |
0x0D5A | 3 Bytes | Unknown |
0x0D5B | 2 Bytes | Unknown |
0x0D5D | 1 byte | Conversations mask, Shinra HQ (applied when you speak). Bit=0(Not spoken to), Bit=1(Spoken to). |
0x0D5E | 21 Bytes | 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 | 1 byte | MDS7PLR1 event flags. 0x01: when everyone run to hideout. 0x02: when talk to man to view pillar to call. This will run special event script when return to this map. Remove this bit after script is called. 0x04: when Barret return to map and call us again. 0x08: after return to this map after seeing pillar. 0x10: after talking to right soldier twice (before mission in 5th reactor). |
0x0D75 | 1 byte | Conversations mask, MDS7 (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 | 1 byte | Conversations mask, MDS7 (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 | 1 byte | Conversations mask, MDS7 (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 | 1 byte | Conversations mask, MDS7 (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 | 1 byte | Conversations mask, MDS7 (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 | 1 byte | Conversations mask, MDS7 (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 | 1 byte | Items mask, Training room at sector 5 (applied when you speak). Bit=0(Item on floor), Bit=1(Item taken). |
0x0D7C | 1 byte | MDS7ST3 event flags. 0x01: when everyone start run to hideout. |
0x0D7D | 1 byte | Midgard train flags. 0x01: when we talk to Biggs on way to sector 7. |
0x0D84 | 32 Bytes | Unknown |
Save Memory Bank B/C
Offset | Length | Description |
---|---|---|
0x0DC4 | 16 bytes | Chocobo slot 1 [See table 3 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] |
0x0E29 | 1 byte | Chocobo breeding tutorial (taught by the Chocobo Sage) Progression Variable |
0x0E2A | 2 bytes | Number of battles to reach in order to unlock the next part of the Chocobo breeding tutorial |
0x0E33 | 1 byte | Lucrecia's Cave sidequest Progression Variable |
0x0E35 | 2 bytes | Lucrecia's Cave sidequest: Number of battles to get past in order to unlock Chaos & Death Penalty |
Save Memory Bank D/E
Offset | Length | Description |
---|---|---|
0 | 1 byte | Which game-play Disc is needed |
30 | 1 byte | Field pointers mask (hand over party leader's head + red and green arrows) 0x00: Inactive 0x02: Active |
31 | 1 byte | If you have max materias in your equipment it is set to non-zero |
32 | 6 bytes | Name of Chocobo 1 (FF Text format) |
38 | 6 bytes | Name of Chocobo 2 (FF Text format) |
44 | 6 bytes | Name of Chocobo 3 (FF Text format) |
50 | 6 bytes | Name of Chocobo 4 (FF Text format) |
56 | 6 bytes | Name of Chocobo 5 (FF Text format) |
62 | 6 bytes | Name of Chocobo 6 (FF Text format) |
68 | 2 bytes | Stamina of Chocobo 1 |
70 | 2 bytes | Stamina of Chocobo 2 |
72 | 2 bytes | Stamina of Chocobo 3 |
74 | 2 bytes | Stamina of Chocobo 4 |
76 | 2 bytes | Stamina of Chocobo 5 |
78 | 2 bytes | Stamina of Chocobo 6 |
89 | 1 byte | Vehicle Enabler |
91 | 1 byte | Save flag. 0x02: set when we in save and unset when out |
113 | 24 bytes | Name of location (FF Text format) |
0x0F5C | 8 bytes | Party's coordinates on world map (FF Coordinates format) |
0x0F64 | 0x0F6B | Unknown (Emerald or Ruby Weapon'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 | Ultimate Weapon's coordinates on world map |
Save Memory Bank 7/F
Offset | Length | Description |
---|---|---|
2 | 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) |
7 | 1 byte | If not 0x00, game crashes |
32 | 2 bytes | Fields items mask. 0x0001: first potion on MD1STIN. 0x0002: second potion on MD1STIN. 0x0004: potion at NMKIN3. 0x0008: phoenix down on NKMIN1. |
87 | 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) |
140 | 1 byte | Field screen rain switch (non-zero to turn on rain effect) |
224 | 16 bytes | Chocobo slot 5 |
240 | 16 bytes | Chocobo slot 6 |
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
Name | Type | ID |
---|---|---|
MP Plus | Independent | 0x00 |
HP Plus | Independent | 0x01 |
Speed Plus | Independent | 0x02 |
Magic Plus | Independent | 0x03 |
Luck Plus | Independent | 0x04 |
EXP Plus | Independent | 0x05 |
Gil Plus | Independent | 0x06 |
Enemy Away | Independent | 0x07 |
Enemy Lure | Independent | 0x08 |
Chocobo Lure | Independent | 0x09 |
Long Range | Independent | 0x0B |
Mega All | Independent | 0x0C |
Counter Attack | Independent | 0x0D |
Slash-All | Command | 0x0E |
Double Cut | Independent | 0x0F |
Pre-emptive | Independent | 0x0A |
Cover | Independent | 0x10 |
Underwater | Independent | 0x11 |
HP <-> MP | Independent | 0x12 |
W-Magic | Command | 0x13 |
W-Summon | Command | 0x14 |
W-Item | Command | 0x15 |
Unknown | Placeholder? | 0X16 |
All | Support | 0x17 |
Counter | Support | 0x18 |
Magic Counter | Support | 0x19 |
MP Turbo | Support | 0x1A |
MP Absorb | Support | 0x1B |
HP Absorb | Support | 0x1C |
Elemental | Support | 0x1D |
Added Effect | Support | 0x1E |
Sneak Attack | Support | 0x1F |
Final Attack | Support | 0x20 |
Added Cut | Support | 0x21 |
Steal As Well | Support | 0x22 |
Quadra Magic | Support | 0x23 |
Steal | Command | 0x24 |
Sense | Command | 0x25 |
Unknown | Placeholder? | 0X26 |
Throw | Command | 0x27 |
Morph | Command | 0x28 |
Deathblow | Command | 0x29 |
Manipulate | Command | 0x2A |
Mime | Command | 0x2B |
Enemy Skill | Command | 0x2C |
Unknown | Placeholder? | 0X2D |
Unknown | Placeholder? | 0X2E |
Unknown | Placeholder? | 0X2F |
Master Command | Command | 0x30 |
Fire | Magic | 0x31 |
Ice | Magic | 0x32 |
Earth | Magic | 0x33 |
Lightning | Magic | 0x34 |
Restore | Magic | 0x35 |
Heal | Magic | 0x36 |
Revive | Magic | 0x37 |
Seal | Magic | 0x38 |
Mystify | Magic | 0x39 |
Transform | Magic | 0x3A |
Exit | Magic | 0x3B |
Poison | Magic | 0x3C |
Demi | Magic | 0x3D |
Barrier | Magic | 0x3E |
Unknown | Placeholder? | 0X3F |
Comet | Magic | 0x40 |
Time | Magic | 0x41 |
Unknown | Placeholder? | 0X42 |
Unknown | Placeholder? | 0X43 |
Destruct | Magic | 0x44 |
Contain | Magic | 0x45 |
FullCure | Magic | 0x46 |
Shield | Magic | 0x47 |
Ultima | Magic | 0x48 |
Master Magic | Magic | 0x49 |
Choco/Mog | Summon | 0x4A |
Shiva | Summon | 0x4B |
Ifrit | Summon | 0x4C |
Ramuh | Summon | 0x4D |
Titan | Summon | 0x4E |
Odin | Summon | 0x4F |
Leviathan | Summon | 0x50 |
Bahamut | Summon | 0x51 |
Kujata | Summon | 0x52 |
Alexander | Summon | 0x53 |
Phoenix | Summon | 0x54 |
Neo Bahamut | Summon | 0x55 |
Hades | Summon | 0x56 |
Typhoon | Summon | 0x57 |
Bahamut ZERO | Summon | 0x58 |
Knights of Round | Summon | 0x59 |
Master Summon | Summon | 0x5A |
Empty Slot | NONE | 0xFF |
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).