Difference between revisions of "Main Page"

From Final Fantasy Inside
Jump to navigation Jump to search
my_wiki>Cyberman
my_wiki>Akari
(Save Memory Bank 3/4)
Line 1: Line 1:
<b>Welcome to QhimmWiki!</b>
+
=== The Savemap ===
  
This wiki has been set up in the hopes of becoming a more efficient means of storing the Qhimm.com knowledge base. The plan is to store relevant information on things such as:
+
The following is the general save format for the game. This data excludes the header data that differs between the PSX and PC version.
<ul>
 
<li>[[FF1NES|Final Fantasy I for the NES]]
 
<li>[[FF7|Final Fantasy VII]]
 
<li>[[FF7:CC|Final Fantasy VII:Crisis Core]]
 
<li>[[FF8|Final Fantasy VIII]]
 
<li>[[FF9|Final Fantasy IX]]
 
<li>[[FF10|Final Fantasy X]]
 
<li>[[FF12|Final Fantasy XII]]
 
<li>[[Xeno|Xenogears]]
 
<li>[[Dissidia|Dissidia]]
 
<li>[[PSX|Sony PlayStation]]
 
<li>[[PS2|Sony PlayStation 2]]
 
<li>[[PS3|Sony PlayStation 3]]
 
<li>[[PSP|Sony PSP]]
 
</ul>
 
  
Information on FF7 should thus go into a subpage of [[FF7]], like [[FF7/Field/Script]]. I'm considering having tech-support information stored here as well, though maybe it too should get its own hierarchy, separate from the tech information in FF7/FF8? Suggestions are welcome [[Talk:Main page|here]].
+
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.
  
For now, I've started an example page on the [[PSX/TIM file|PSX TIM format]]; check it out to see what I envision of this site. :)
+
{| border="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse;"
 +
|+'''Table 1: FF7 Save Slot'''
 +
! style="background:rgb(204,204,204)" align="center" | Offset
 +
! style="background:rgb(204,204,204)" align="center" | Length
 +
! style="background:rgb(204,204,204)" align="center" colspan="2" | Description
 +
|-
 +
| 0x0000
 +
| 4 bytes
 +
| colspan="2" | Checksum ([http://forums.qhimm.com/index.php?topic=4211.msg60545#msg60545 how to generate])
 +
|-
 +
| 0x0004
 +
| 1 byte
 +
| colspan="2" | '''Preview''': Lead character's level
 +
|-
 +
| rowspan="2" | 0x0005
 +
| rowspan="2" | 1 byte
 +
| colspan="2" | '''Preview''': Lead character's portrait
 +
|-
 +
| 0x00: Cloud<br />0x01: Barret<br />0x02: Tifa<br />0x03: Aeris<br />0x04: Red XIII<br />0x05: Yuffie<br />0x06: Cait Sith
 +
| 0x07: Vincent<br />0x08: Cid<br />0x09: Young Cloud<br />0x0A: Sephiroth<br />0x0B: Chocobo<br />0xFF: None
 +
|-
 +
| 0x0006
 +
| 1 byte
 +
| colspan="2" | '''Preview''': 2nd character's portrait
 +
|-
 +
| 0x0007
 +
| 1 byte
 +
| colspan="2" | '''Preview''': 3rd character's portrait
 +
|-
 +
| 0x0008
 +
| 16 bytes
 +
| colspan="2" | '''Preview''': Lead character's name, terminated with 0xFF
 +
|-
 +
| 0x0018
 +
| 2 bytes
 +
| colspan="2" | '''Preview''': Lead character's current HP
 +
|-
 +
| 0x001A
 +
| 2 bytes
 +
| colspan="2" | '''Preview''': Lead character's max HP
 +
|-
 +
| 0x001C
 +
| 2 bytes
 +
| colspan="2" | '''Preview''': Lead character's current MP
 +
|-
 +
| 0x001E
 +
| 2 bytes
 +
| colspan="2" | '''Preview''': Lead character's max MP
 +
|-
 +
| 0x0020
 +
| 4 bytes
 +
| colspan="2" | '''Preview''': Amount of Gil
 +
|-
 +
| 0x0024
 +
| 4 bytes
 +
| colspan="2" | '''Preview''': Total number of seconds played
 +
|-
 +
| 0x0028
 +
| 32 bytes
 +
| colspan="2" | '''Preview''': Save location, [[FF7/FF Text|FF Text format]], terminated with 0xFF
 +
|-
 +
| 0x0048
 +
| 3 bytes
 +
| colspan="2" | RGB value for upper left corner of window
 +
|-
 +
| 0x004B
 +
| 3 bytes
 +
| colspan="2" | RGB value for upper right corner of window
 +
|-
 +
| 0x004E
 +
| 3 bytes
 +
| colspan="2" | RGB value for lower left corner of window
 +
|-
 +
| 0x0051
 +
| 3 bytes
 +
| colspan="2" | RGB value for lower right corner of window
 +
|-
 +
| 0x0054
 +
| 132 bytes
 +
| colspan="2" | Character record: Cloud [see below for Character record format]
 +
|-
 +
| 0x00D8
 +
| 132 bytes
 +
| colspan="2" | Character record: Barret
 +
|-
 +
| 0x015C
 +
| 132 bytes
 +
| colspan="2" | Character record: Tifa
 +
|-
 +
| 0x01E0
 +
| 132 bytes
 +
| colspan="2" | Character record: Aeris
 +
|-
 +
| 0x0264
 +
| 132 bytes
 +
| colspan="2" | Character record: Red XIII
 +
|-
 +
| 0x02E8
 +
| 132 bytes
 +
| colspan="2" | Character record: Yuffie
 +
|-
 +
| 0x036C
 +
| 132 bytes
 +
| colspan="2" | Character record: Cait Sith (or Young Cloud)
 +
|-
 +
| 0x03F0
 +
| 132 bytes
 +
| colspan="2" | Character record: Vincent (or Sephiroth)
 +
|-
 +
| 0x0474
 +
| 132 bytes
 +
| colspan="2" | Character record: Cid
 +
|-
 +
| 0x04F8
 +
| 1 byte
 +
| colspan="2" | Party member in slot 1 [uses same format as character portrait above]
 +
|-
 +
| 0x04F9
 +
| 1 byte
 +
| colspan="2" | Party member in slot 2
 +
|-
 +
| 0x04FA
 +
| 1 byte
 +
| colspan="2" | Party member in slot 3
 +
|-
 +
| 0x04FB
 +
| 1 byte
 +
| colspan="2" | 0xFF
 +
|-
 +
| 0x04FC
 +
| 640 bytes
 +
| colspan="2" | Party Item stock, 2 bytes per item, 320 item slots max [See [[#Save_Item_List|save item list]] below]
 +
|-
 +
| 0x077C
 +
| 800 bytes
 +
| colspan="2" | Party Materia stock, 4 bytes per materia, 200 materia max [See [[#Save_Materia_List|save materia list]] ]
 +
|-
 +
| 0x0A9C
 +
| 192 bytes
 +
| colspan="2" | Materia stolen by Yuffie, 4 bytes per materia, 48 materia max [See [[#Save_Materia_List|save materia list]] ]
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0B5C
 +
|style="background:rgb(255,255,204)" | 32 bytes
 +
|style="background:rgb(255,255,204)" colspan="2" | Unknown
 +
|-
 +
| 0x0B7C
 +
| 4 bytes
 +
| colspan="2" | Party's Gil amount
 +
|-
 +
| 0x0B80
 +
| 4 bytes
 +
| colspan="2" | Total number of seconds played
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0B84
 +
|style="background:rgb(255,255,204)" | 16 bytes
 +
|style="background:rgb(255,255,204)" colspan="2" | Unknown
 +
|-
 +
| 0x0B94
 +
| 2 bytes
 +
| colspan="2" | Current map
 +
|-
 +
| 0x0B96
 +
| 2 bytes
 +
| colspan="2" | Current location
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0B98
 +
|style="background:rgb(255,255,204)" | 2 bytes
 +
|style="background:rgb(255,255,204)" colspan="2" | Unknown
 +
|-
 +
| 0x0B9A
 +
| 2 bytes
 +
| colspan="2" | X location on world map
 +
|-
 +
| 0x0B9C
 +
| 2 bytes
 +
| colspan="2" | Y location on world map
 +
|-
 +
| 0x0B9E
 +
| 2 bytes
 +
| colspan="2" | Z location on world map
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0BA0
 +
|style="background:rgb(255,255,204)" | 4 bytes
 +
|style="background:rgb(255,255,204)" colspan="2" | Unknown
 +
|-
 +
|style="background:rgb(255,205,154)" | 0x0BA4
 +
|style="background:rgb(255,205,154)" |
 +
|style="background:rgb(255,205,154)" colspan="2" | [BEGINNING OF MEMORY BANK 1/2]
 +
|-
 +
|style="background:rgb(255,205,154)" | 0x0CA4
 +
|style="background:rgb(255,205,154)" |
 +
|style="background:rgb(255,205,154)" colspan="2" | [BEGINNING OF MEMORY BANK 3/4]
 +
|-
 +
|style="background:rgb(255,205,154)" | 0x0DA4
 +
|style="background:rgb(255,205,154)" |
 +
|style="background:rgb(255,205,154)" colspan="2" | [BEGINNING OF MEMORY BANK B/C]
 +
|-
 +
|style="background:rgb(255,205,154)" | 0x0EA4
 +
|style="background:rgb(255,205,154)" |
 +
|style="background:rgb(255,205,154)" colspan="2" | [BEGINNING OF MEMORY BANK D/E]
 +
|-
 +
|style="background:rgb(255,205,154)" | 0x0FA4
 +
|style="background:rgb(255,205,154)" |
 +
|style="background:rgb(255,205,154)" colspan="2" | [BEGINNING OF MEMORY BANK 7/F]
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x10A3
 +
|style="background:rgb(255,255,204)" | 0x10AE
 +
|style="background:rgb(255,255,204)" colspan="2" | Unknown
 +
|-
 +
| rowspan="2" | 0x10AD
 +
| rowspan="2" | 2 bytes
 +
| colspan="2" | PHS Locking Mask (1: Locked)
 +
|-
 +
| colspan="2" |
 +
{| border="0" cellspacing="1" cellpadding="3" style="background: rgb(0,0,0)" align="center"
 +
|style="background:rgb(68,144,205)" | LSB
 +
|style="background:rgb(205,205,230)" | Cloud
 +
|style="background:rgb(205,205,230)" | Barret
 +
|style="background:rgb(205,205,230)" | Tifa
 +
|style="background:rgb(205,205,230)" | Aeris
 +
|style="background:rgb(205,205,230)" | Red
 +
|style="background:rgb(205,205,230)" | Yuffie
 +
|style="background:rgb(205,205,230)" | Vincent
 +
|style="background:rgb(205,205,230)" | Cait
 +
|style="background:rgb(205,205,230)" | Cid
 +
|style="background:rgb(68,144,205)" | MSB
 +
|}
 +
|-
 +
| rowspan="2" | 0x10AF
 +
| rowspan="2" | 2 bytes
 +
| colspan="2" | PHS Visibility Mask (does not ''turn off'' party characters)
 +
|-
 +
| colspan="2" |
 +
{| border="0" cellspacing="1" cellpadding="3" style="background: rgb(0,0,0)" align="center"
 +
|style="background:rgb(68,144,205)" | LSB
 +
|style="background:rgb(205,205,230)" | Cloud
 +
|style="background:rgb(205,205,230)" | Barret
 +
|style="background:rgb(205,205,230)" | Tifa
 +
|style="background:rgb(205,205,230)" | Aeris
 +
|style="background:rgb(205,205,230)" | Red
 +
|style="background:rgb(205,205,230)" | Yuffie
 +
|style="background:rgb(205,205,230)" | Vincent
 +
|style="background:rgb(205,205,230)" | Cait
 +
|style="background:rgb(205,205,230)" | Cid
 +
|style="background:rgb(68,144,205)" | MSB
 +
|}
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x10B0
 +
|style="background:rgb(255,255,204)" | 0x10D7
 +
|style="background:rgb(255,255,204)" colspan="2" | Unknown
 +
|-
 +
| 0x10D8
 +
| 1 byte
 +
| colspan="2" | Battle Speed (0x00: fastest, 0xFF: slowest)
 +
|-
 +
| 0x10D9
 +
| 1 byte
 +
| colspan="2" | Battle Message Speed
 +
|-
 +
| rowspan="5" | 0x10DA
 +
| rowspan="5" | 1 byte
 +
| colspan="2" | General configuration
 +
|-
 +
| colspan="2" | Sound: mono (0x00); stereo (0x01)
 +
|-
 +
| colspan="2" | Controller: normal (0x00); customize (0x04)
 +
|-
 +
| colspan="2" | Cursor: initial (0x00); memory (0x10)
 +
|-
 +
| colspan="2" | ATB: Active (0x00); Recommended (0x40); Wait (0x80)
 +
|-
 +
| rowspan="4" | 0x10DB
 +
| rowspan="4" | 1 byte
 +
| colspan="2" | General configuration (continued)
 +
|-
 +
| colspan="2" | Camera angle: Auto (0x00); Fix (0x01)
 +
|-
 +
| colspan="2" | Magic order: (game crashes if flag set to 0x18 or 0x1C)<br /> "1. restore attack indirect" (0x00)<br />"2. restore indirect attack" (0x04)<br />"3. attack indirect restore" (0x08)<br />"4. attack restore indirect" (0x0C)<br />"5. indirect restore attack" (0x10)<br />"6. indirect attack restore" (0x14)<br />
 +
|-
 +
| colspan="2" | Extra battle window displaying information: Inactive (0x00); Active (0x40)
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x10DC
 +
|style="background:rgb(255,255,204)" | 16 bytes
 +
|style="background:rgb(255,255,204)" colspan="2" | Unknown
 +
|-
 +
| 0x10EC
 +
| 1 byte
 +
| colspan="2" | Message Speed
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x10ED
 +
|style="background:rgb(255,255,204)" | 7 bytes
 +
|style="background:rgb(255,255,204)" colspan="2" | Unknown
 +
|}
  
Even though this is a wiki, for now registration and anonymous contributions have been deactivated in an effort to better control the quality and structure of initial contributions. If you feel you have solid information to contribute, drop Qhimm a note and you'll (probably) get an account. Also, further discussion on the details of how to structure the content is to be expected. For now, a subpage-oriented design is favored. Also, since this is a reasonably fresh install I haven't had time to write a huge amount of documentation for it. As a result, ''many of the help links lead to empty pages''.
+
{| border="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse;"
 +
|+'''Table 2: Character Record'''
 +
! style="background:rgb(204,204,204)" align="center" | Offset
 +
! style="background:rgb(204,204,204)" align="center" | Length
 +
! style="background:rgb(204,204,204)" align="center" | Description
 +
|-
 +
| 0x00
 +
| 1 byte
 +
| Character ID
 +
|-
 +
| 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 ([[FF7/FF Text|FF Text]] format)
 +
|-
 +
| 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
 +
|-
 +
| 0x22
 +
| 2 bytes
 +
| Learned limit skills
 +
|-
 +
| 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)
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x34
 +
|style="background:rgb(255,255,204)" | 4 bytes
 +
|style="background:rgb(255,255,204)" | 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
 +
|}
  
Contributors are encouraged to add their user links to the [[QhimmWiki:Community Portal]].
+
{| border="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse;"
 +
|+'''Table 3: Chocobo Record'''
 +
! style="background:rgb(204,204,204)" align="center" | Offset
 +
! style="background:rgb(204,204,204)" align="center" | Length
 +
! style="background:rgb(204,204,204)" align="center" | 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
 +
|-
 +
|style="background:rgb(255,255,204)" | 0xC
 +
|style="background:rgb(255,255,204)" | 1 byte
 +
|style="background:rgb(255,255,204)" | Pcount (?)
 +
|-
 +
| 0xD
 +
| 1 byte
 +
| Number of races won
 +
|-
 +
| 0xE
 +
| 1 byte
 +
| Sex (0: male | 1: female)
 +
|-
 +
| 0xF
 +
| 1 byte
 +
| Type (Yellow, Green, Blue, Black, Gold)
 +
|}
 +
 
 +
== Save Memory Bank 1/2 ==
 +
 
 +
{| border="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse;"
 +
|+'''Table 1: FF7 Save Slot'''
 +
! style="background:rgb(204,204,204)" align="center" | Offset
 +
! style="background:rgb(204,204,204)" align="center" | Length
 +
! style="background:rgb(204,204,204)" align="center" | Description
 +
|-
 +
| 0
 +
| 2 byte
 +
| Main progress variable
 +
|-
 +
| 3
 +
| 1 byte
 +
| Aeris' current love points
 +
|-
 +
| 4
 +
| 1 byte
 +
| Tifa's current love points
 +
|-
 +
| 5
 +
| 1 byte
 +
| Yuffie's current love points
 +
|-
 +
| 6
 +
| 1 byte
 +
| Barret's current love points
 +
|-
 +
| 21
 +
| 1 byte
 +
| Game timer (Hours)
 +
|-
 +
| 22
 +
| 1 byte
 +
| Game timer (Minutes)
 +
|-
 +
| 23
 +
| 1 byte
 +
| Game timer (Seconds)
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0BB7
 +
|style="background:rgb(255,255,204)" | 1 byte
 +
|style="background:rgb(255,255,204)" | Game timer (Tenths)
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0BB8
 +
|style="background:rgb(255,255,204)" | 4 bytes
 +
|style="background:rgb(255,255,204)" | Unknown (curse ring usage?)
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0BBC
 +
|style="background:rgb(255,255,204)" | 2 bytes
 +
|style="background:rgb(255,255,204)" | Number of battles fought
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0BBE
 +
|style="background:rgb(255,255,204)" | 2 bytes
 +
|style="background:rgb(255,255,204)" | Number of escapes
 +
|-
 +
| rowspan="2" | 28
 +
| rowspan="2" | 2 bytes
 +
| colspan="2" | Menu Visiblity Mask (Quit not affected)
 +
|-
 +
| colspan="2" |
 +
{| border="0" cellspacing="1" cellpadding="3" style="background: rgb(0,0,0)" align="center"
 +
|style="background:rgb(68,144,205)" | LSB
 +
|style="background:rgb(205,205,230)" | item
 +
|style="background:rgb(205,205,230)" | magic
 +
|style="background:rgb(205,205,230)" | materia
 +
|style="background:rgb(205,205,230)" | equip
 +
|style="background:rgb(205,205,230)" | status
 +
|style="background:rgb(205,205,230)" | order
 +
|style="background:rgb(205,205,230)" | limit
 +
|style="background:rgb(205,205,230)" | config
 +
|style="background:rgb(205,205,230)" | PHS
 +
|style="background:rgb(205,205,230)" | save
 +
|style="background:rgb(68,144,205)" | MSB
 +
|}
 +
|-
 +
| rowspan="2" | 30
 +
| rowspan="2" | 2 bytes
 +
| colspan="2" | Menu Locking Mask (1: Locked) (Quit not affected)
 +
|-
 +
| colspan="2" |
 +
{| border="0" cellspacing="1" cellpadding="3" style="background: rgb(0,0,0)" align="center"
 +
|style="background:rgb(68,144,205)" | LSB
 +
|style="background:rgb(205,205,230)" | item
 +
|style="background:rgb(205,205,230)" | magic
 +
|style="background:rgb(205,205,230)" | materia
 +
|style="background:rgb(205,205,230)" | equip
 +
|style="background:rgb(205,205,230)" | status
 +
|style="background:rgb(205,205,230)" | order
 +
|style="background:rgb(205,205,230)" | limit
 +
|style="background:rgb(205,205,230)" | config
 +
|style="background:rgb(205,205,230)" | PHS
 +
|style="background:rgb(205,205,230)" | save
 +
|style="background:rgb(68,144,205)" | MSB
 +
|}
 +
|-
 +
| 48
 +
| 1 byte
 +
| Item masks.<br />0x01: Potion on MD8_3.
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0BD5
 +
|style="background:rgb(255,255,204)" | 1 byte
 +
|style="background:rgb(255,255,204)" | Materia Cave masks (applied when you pick up the corresponding Materia).<br />0x01: Mime, 0x02: HP&lt;-&gt;MP, 0x04: Quadra Magic, 0x08: KOTR
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0BD7
 +
|style="background:rgb(255,255,204)" | 1 byte
 +
|style="background:rgb(255,255,204)" | Item masks (applied when you pick them up).<br />0x10: Chaos & Death Penalty, others are unknown
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0BE4
 +
|style="background:rgb(255,255,204)" | 8 bytes
 +
|style="background:rgb(255,255,204)" | Key items [see Key Item List]
 +
|-
 +
| 80
 +
| 1 byte
 +
| Aeris battle love points
 +
|-
 +
| 81
 +
| 1 byte
 +
| Tifa battle love points
 +
|-
 +
| 82
 +
| 1 byte
 +
| Yuffie battle love points
 +
|-
 +
| 83
 +
| 1 byte
 +
| Barret battle love points
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0BF9
 +
|style="background:rgb(255,255,204)" | 1 byte
 +
|style="background:rgb(255,255,204)" | Field Chocobo rating
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0BFA
 +
|style="background:rgb(255,255,204)" | 1 byte
 +
|style="background:rgb(255,255,204)" | Field Chocobo rating
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0BFB
 +
|style="background:rgb(255,255,204)" | 1 byte
 +
|style="background:rgb(255,255,204)" | Field Chocobo rating
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0BFC
 +
|style="background:rgb(255,255,204)" | 1 byte
 +
|style="background:rgb(255,255,204)" | Field Chocobo rating
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0BFF
 +
|style="background:rgb(255,255,204)" | 3 bytes
 +
|style="background:rgb(255,255,204)" | Ultimate Weapon's remaining HP
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0C02
 +
|style="background:rgb(255,255,204)" | 1 byte
 +
|style="background:rgb(255,255,204)" | Rating for Penned Chocobo Number 1 (01: Wonderful -> 08: Worst)
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0C03
 +
|style="background:rgb(255,255,204)" | 1 byte
 +
|style="background:rgb(255,255,204)" | Rating for Penned Chocobo Number 2
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0C04
 +
|style="background:rgb(255,255,204)" | 1 byte
 +
|style="background:rgb(255,255,204)" | Rating for Penned Chocobo Number 3
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0C05
 +
|style="background:rgb(255,255,204)" | 1 byte
 +
|style="background:rgb(255,255,204)" | Rating for Penned Chocobo Number 4
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0C1E
 +
|style="background:rgb(255,255,204)" | 1 byte
 +
|style="background:rgb(255,255,204)" | Mask for the "target" text appearing over all available targets in battle<br />Inactive (0x00); Active (0x40)<br />(Other masks are still to be identified on this byte)
 +
|-
 +
| 225
 +
| 1 byte
 +
| Mission 1st reactor flags.<br />0x01: elevator on top floor.<br /> 0x08: 1st door opened.<br />0x10: 2nd door opened.<br />0x20: Jessie free from stuck.<br />0x40: bomb set.<br />0x80: set if time is out for gameover check.
 +
|-
 +
| 226
 +
| 1 byte
 +
| Mission 1st reactor flags.<br />0x02: elevator door opened.<br />0x04: scrolled at map init to show reactor.
 +
|}
 +
 
 +
== Save Memory Bank 3/4 ==
 +
 
 +
{| border="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse;"
 +
|+'''Table 1: FF7 Save Slot'''
 +
! style="background:rgb(204,204,204)" align="center" | Offset
 +
! style="background:rgb(204,204,204)" align="center" | Length
 +
! style="background:rgb(204,204,204)" align="center" | Description
 +
|-
 +
| 66
 +
| 1 byte
 +
| Escape from 1st reactor progress.<br />0x01: after scroll at start of map MD8_2 (maybe unneded).<br />0x02: after people panic on MD8_3 is over to never show it again.
 +
|-
 +
|style="background:rgb(255,255,204)" | 74
 +
|style="background:rgb(255,255,204)" | 2 bytes
 +
|style="background:rgb(255,255,204)" | Party GP (0-10000)
 +
|-
 +
|style="background:rgb(255,255,204)" | 88
 +
|style="background:rgb(255,255,204)" | 1 byte
 +
|style="background:rgb(255,255,204)" | Number of chocobo stables owned
 +
|-
 +
|style="background:rgb(255,255,204)" | 90
 +
|style="background:rgb(255,255,204)" | 1 byte
 +
|style="background:rgb(255,255,204)" | Number of occupied stables
 +
|-
 +
|style="background:rgb(255,255,204)" | 91
 +
|style="background:rgb(255,255,204)" | 1 byte
 +
|style="background:rgb(255,255,204)" | Kalm Traveler sidequest Progression ([http://forums.qhimm.com/index.php?topic=5289.0 details])
 +
|-
 +
| 111
 +
| 1 byte
 +
| Aeris flower quest progress.<br />0x01: if we buy flower from Aeris.
 +
|-
 +
| 127
 +
| 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.
 +
|-
 +
| 208
 +
| 1 byte
 +
| MDS7PLR1 event flags.<br />0x01: when everyone run to hideout.<br />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.<br />0x04: when Barret return to map and call us again.<br />0x08: ater return to this map after seeing pillar.<br />0x10: after talking to right soldier twice (before mission in 5th reactor).
 +
|-
 +
| 216
 +
| 1 byte
 +
| MDS7ST3 event flags.<br />0x04: when pair on station agreed with each other.
 +
|-
 +
| 223
 +
| 1 byte
 +
| Midgard train flags.<br />0x01: when we talk to Biggs on way to sector 7.<br />0x02: when we talk to Wedge twice on way to sector 7.<br />0x04: when talk to Jessie, before look at map.<br />0x10: this bit is checked on ROOTMAP, though it doesn't use ingame.
 +
|}
 +
 
 +
== Save Memory Bank B/C ==
 +
 
 +
{| border="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse;"
 +
|+'''Table 1: FF7 Save Slot'''
 +
! style="background:rgb(204,204,204)" align="center" | Offset
 +
! style="background:rgb(204,204,204)" align="center" | Length
 +
! style="background:rgb(204,204,204)" align="center" | Description
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0DC4
 +
|style="background:rgb(255,255,204)" | 16 bytes
 +
|style="background:rgb(255,255,204)" | Chocobo slot 1 [See table 3 for Chocobo Slot format]
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0DD4
 +
|style="background:rgb(255,255,204)" | 16 bytes
 +
|style="background:rgb(255,255,204)" | Chocobo slot 2
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0DE4
 +
|style="background:rgb(255,255,204)" | 16 bytes
 +
|style="background:rgb(255,255,204)" | Chocobo slot 3
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0DF4
 +
|style="background:rgb(255,255,204)" | 16 bytes
 +
|style="background:rgb(255,255,204)" | Chocobo slot 4 [Slot 5 and 6 are located at 0x1084 - 0x10A3]
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0E29
 +
|style="background:rgb(255,255,204)" | 1 byte
 +
|style="background:rgb(255,255,204)" | Chocobo breeding tutorial (taught by the Chocobo Sage) Progression Variable
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0E2A
 +
|style="background:rgb(255,255,204)" | 2 bytes
 +
|style="background:rgb(255,255,204)" | Number of battles to reach in order to unlock the next part of the Chocobo breeding tutorial
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0E33
 +
|style="background:rgb(255,255,204)" | 1 byte
 +
|style="background:rgb(255,255,204)" | Lucrecia's Cave sidequest Progression Variable
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0E35
 +
|style="background:rgb(255,255,204)" | 2 bytes
 +
|style="background:rgb(255,255,204)" | Lucrecia's Cave sidequest:<br />Number of battles to get past in order to unlock Chaos & Death Penalty
 +
|}
 +
 
 +
== Save Memory Bank D/E ==
 +
 
 +
{| border="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse;"
 +
|+'''Table 1: FF7 Save Slot'''
 +
! style="background:rgb(204,204,204)" align="center" | Offset
 +
! style="background:rgb(204,204,204)" align="center" | Length
 +
! style="background:rgb(204,204,204)" align="center" | Description
 +
|-
 +
| 30
 +
| 1 byte
 +
| Field pointers mask (hand over party leader's head + red and green arrows)<br />0x00: Inactive<br />0x02: Active
 +
|-
 +
| 31
 +
| 1 byte
 +
| If you have max materias in your equipment it is set to non-zero
 +
|-
 +
|style="background:rgb(255,255,204)" | 32
 +
|style="background:rgb(255,255,204)" | 6 bytes
 +
|style="background:rgb(255,255,204)" | Name of Chocobo 1 ([[FF7/FF Text|FF Text format]])
 +
|-
 +
|style="background:rgb(255,255,204)" | 38
 +
|style="background:rgb(255,255,204)" | 6 bytes
 +
|style="background:rgb(255,255,204)" | Name of Chocobo 2 ([[FF7/FF Text|FF Text format]])
 +
|-
 +
|style="background:rgb(255,255,204)" | 44
 +
|style="background:rgb(255,255,204)" | 6 bytes
 +
|style="background:rgb(255,255,204)" | Name of Chocobo 3 ([[FF7/FF Text|FF Text format]])
 +
|-
 +
|style="background:rgb(255,255,204)" | 50
 +
|style="background:rgb(255,255,204)" | 6 bytes
 +
|style="background:rgb(255,255,204)" | Name of Chocobo 4 ([[FF7/FF Text|FF Text format]])
 +
|-
 +
|style="background:rgb(255,255,204)" | 56
 +
|style="background:rgb(255,255,204)" | 6 bytes
 +
|style="background:rgb(255,255,204)" | Name of Chocobo 5 ([[FF7/FF Text|FF Text format]])
 +
|-
 +
|style="background:rgb(255,255,204)" | 62
 +
|style="background:rgb(255,255,204)" | 6 bytes
 +
|style="background:rgb(255,255,204)" | Name of Chocobo 6 ([[FF7/FF Text|FF Text format]])
 +
|-
 +
|style="background:rgb(255,255,204)" | 68
 +
|style="background:rgb(255,255,204)" | 2 bytes
 +
|style="background:rgb(255,255,204)" | Stamina of Chocobo 1
 +
|-
 +
|style="background:rgb(255,255,204)" | 70
 +
|style="background:rgb(255,255,204)" | 2 bytes
 +
|style="background:rgb(255,255,204)" | Stamina of Chocobo 2
 +
|-
 +
|style="background:rgb(255,255,204)" | 72
 +
|style="background:rgb(255,255,204)" | 2 bytes
 +
|style="background:rgb(255,255,204)" | Stamina of Chocobo 3
 +
|-
 +
|style="background:rgb(255,255,204)" | 74
 +
|style="background:rgb(255,255,204)" | 2 bytes
 +
|style="background:rgb(255,255,204)" | Stamina of Chocobo 4
 +
|-
 +
|style="background:rgb(255,255,204)" | 76
 +
|style="background:rgb(255,255,204)" | 2 bytes
 +
|style="background:rgb(255,255,204)" | Stamina of Chocobo 5
 +
|-
 +
|style="background:rgb(255,255,204)" | 78
 +
|style="background:rgb(255,255,204)" | 2 bytes
 +
|style="background:rgb(255,255,204)" | Stamina of Chocobo 6
 +
|-
 +
|style="background:rgb(255,255,204)" | 89
 +
|style="background:rgb(255,255,204)" | 1 byte
 +
|style="background:rgb(255,255,204)" | Vehicle Enabler
 +
|-
 +
| 91
 +
| 1 byte
 +
| Save flag.<br />0x02: set when we in save and unset when out
 +
|-
 +
|style="background:rgb(255,255,204)" | 113
 +
|style="background:rgb(255,255,204)" | 24 bytes
 +
|style="background:rgb(255,255,204)" | Name of location ([[FF7/FF Text|FF Text format]])
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0F5C
 +
|style="background:rgb(255,255,204)" | 8 bytes
 +
|style="background:rgb(255,255,204)" | Party's coordinates on world map ([[FF7/FF_Coordinates|FF Coordinates format]])
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0F64
 +
|style="background:rgb(255,255,204)" | 0x0F6B
 +
|style="background:rgb(255,255,204)" | Unknown (Emerald or Ruby Weapon's coordinates on world map ?)
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0F6C
 +
|style="background:rgb(255,255,204)" | 8 bytes
 +
|style="background:rgb(255,255,204)" | Tiny Bronco/Chocobo's coordinates on world map
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0F74
 +
|style="background:rgb(255,255,204)" | 8 bytes
 +
|style="background:rgb(255,255,204)" | Buggy/Highwind's coordinates on world map
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0F7C
 +
|style="background:rgb(255,255,204)" | 8 bytes
 +
|style="background:rgb(255,255,204)" | Submarine's coordinates on world map
 +
|-
 +
|style="background:rgb(255,255,204)" | 0x0F84
 +
|style="background:rgb(255,255,204)" | 8 bytes
 +
|style="background:rgb(255,255,204)" | Ultimate Weapon's coordinates on world map
 +
|}
 +
 
 +
== Save Memory Bank 7/F ==
 +
 
 +
{| border="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse;"
 +
|+'''Table 1: FF7 Save Slot'''
 +
! style="background:rgb(204,204,204)" align="center" | Offset
 +
! style="background:rgb(204,204,204)" align="center" | Length
 +
! style="background:rgb(204,204,204)" align="center" | Description
 +
|-
 +
|style="background:rgb(255,255,204)" | 2
 +
|style="background:rgb(255,255,204)" | 1 byte
 +
|style="background:rgb(255,255,204)" | World map camera & map display<br />Add two values (one from camera, one from map) and set this byte.<br />
 +
Camera: Aerial(00); Closeup(20)<br />
 +
Map: Off(80); Small(00); Large(40)
 +
|-
 +
|style="background:rgb(255,255,204)" | 7
 +
|style="background:rgb(255,255,204)" | 1 byte
 +
|style="background:rgb(255,255,204)" | If not 0x00, game crashes
 +
|-
 +
| 32
 +
| 2 byte
 +
| Fields items mask.<br />0x0001: first potion on MD1STIN.<br />0x0002: second potion on MD1STIN.<br />0x0004: potion at NMKIN3.<br />0x0008: phoenix down on NKMIN1.
 +
|-
 +
|style="background:rgb(255,255,204)" | 87
 +
|style="background:rgb(255,255,204)" | 1 byte
 +
|style="background:rgb(255,255,204)" | Kalm Traveler prices visibility (each bit set back to 0 when picked up)<br />Guide Book (0x01); Master Command(0x02); Master Magic (0x04); Master Summon (0x08); Gold Chocobo (0x10)
 +
|-
 +
|style="background:rgb(255,255,204)" | 140
 +
|style="background:rgb(255,255,204)" | 1 byte
 +
|style="background:rgb(255,255,204)" | Field screen rain switch (non-zero to turn on rain effect)
 +
|-
 +
|style="background:rgb(255,255,204)" | 224
 +
|style="background:rgb(255,255,204)" | 16 bytes
 +
|style="background:rgb(255,255,204)" | Chocobo slot 5
 +
|-
 +
|style="background:rgb(255,255,204)" | 240
 +
|style="background:rgb(255,255,204)" | 16 bytes
 +
|style="background:rgb(255,255,204)" | Chocobo slot 6
 +
|}
 +
 
 +
== Save Item List ==
 +
 
 +
Items are loaded sequentially into data determined by the order they are placed in the KERNEL.BIN file. They are stored using 9 bits for an index and 7 bits for quantity:
 +
In Binary:
 +
XXXXXXXX QQQQQQQX
 +
Where X is the index and Q is the quantity. There are 128 Items (including the blank ones) and 128 Weapons. These are indexes 0-255. The Armors and Accessories are then loaded sequentially (32 Armors then 32 Accessories) and indexed 256-319. If the index of the stored item is over 255 then the final bit there is 1. Quantity is limited to 99 (1100011 in binary).
 +
 
 +
== Save Materia List ==
 +
 
 +
Materia is stored as an index followed by the amount of AP on that instance of Materia.
 +
 
 +
== 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 0x0FE7).

Revision as of 08:27, 4 June 2009

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.

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.

Table 1: FF7 Save Slot
Offset Length Description
0x0000 4 bytes Checksum (how to generate)
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, 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
0x015C 132 bytes Character record: Tifa
0x01E0 132 bytes Character record: Aeris
0x0264 132 bytes Character record: Red XIII
0x02E8 132 bytes Character record: Yuffie
0x036C 132 bytes Character record: Cait Sith (or Young Cloud)
0x03F0 132 bytes Character record: Vincent (or Sephiroth)
0x0474 132 bytes Character record: Cid
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 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 Unknown
0x0B7C 4 bytes Party's Gil amount
0x0B80 4 bytes Total number of seconds played
0x0B84 16 bytes Unknown
0x0B94 2 bytes Current map
0x0B96 2 bytes Current location
0x0B98 2 bytes Unknown
0x0B9A 2 bytes X location on world map
0x0B9C 2 bytes Y location on world map
0x0B9E 2 bytes Z location on world map
0x0BA0 4 bytes Unknown
0x0BA4 [BEGINNING OF MEMORY BANK 1/2]
0x0CA4 [BEGINNING OF MEMORY BANK 3/4]
0x0DA4 [BEGINNING OF MEMORY BANK B/C]
0x0EA4 [BEGINNING OF MEMORY BANK D/E]
0x0FA4 [BEGINNING OF MEMORY BANK 7/F]
0x10A3 0x10AE Unknown
0x10AD 2 bytes PHS Locking Mask (1: Locked)
LSB Cloud Barret Tifa Aeris Red Yuffie Vincent Cait Cid MSB
0x10AF 2 bytes PHS Visibility Mask (does not turn off party characters)
LSB Cloud Barret Tifa Aeris Red Yuffie Vincent Cait Cid MSB
0x10B0 0x10D7 Unknown
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 Unknown
0x10EC 1 byte Message Speed
0x10ED 7 bytes Unknown
Table 2: Character Record
Offset Length Description
0x00 1 byte Character ID
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)
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
0x22 2 bytes Learned limit skills
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
Table 3: 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 Memory Bank 1/2

Table 1: FF7 Save Slot
Offset Length Description
0 2 byte Main progress variable
3 1 byte Aeris' current love points
4 1 byte Tifa's current love points
5 1 byte Yuffie's current love points
6 1 byte Barret's current love points
21 1 byte Game timer (Hours)
22 1 byte Game timer (Minutes)
23 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
28 2 bytes Menu Visiblity Mask (Quit not affected)
LSB item magic materia equip status order limit config PHS save MSB
30 2 bytes Menu Locking Mask (1: Locked) (Quit not affected)
LSB item magic materia equip status order limit config PHS save MSB
48 1 byte Item masks.
0x01: Potion on MD8_3.
0x0BD5 1 byte Materia Cave masks (applied when you pick up the corresponding Materia).
0x01: Mime, 0x02: HP<->MP, 0x04: Quadra Magic, 0x08: KOTR
0x0BD7 1 byte Item masks (applied when you pick them up).
0x10: Chaos & Death Penalty, others are unknown
0x0BE4 8 bytes Key items [see Key Item List]
80 1 byte Aeris battle love points
81 1 byte Tifa battle love points
82 1 byte Yuffie battle love points
83 1 byte Barret battle love points
0x0BF9 1 byte Field Chocobo rating
0x0BFA 1 byte Field Chocobo rating
0x0BFB 1 byte Field Chocobo rating
0x0BFC 1 byte Field Chocobo rating
0x0BFF 3 bytes Ultimate Weapon's remaining HP
0x0C02 1 byte Rating for Penned Chocobo Number 1 (01: Wonderful -> 08: Worst)
0x0C03 1 byte Rating for Penned Chocobo Number 2
0x0C04 1 byte Rating for Penned Chocobo Number 3
0x0C05 1 byte Rating for Penned Chocobo Number 4
0x0C1E 1 byte Mask for the "target" text appearing over all available targets in battle
Inactive (0x00); Active (0x40)
(Other masks are still to be identified on this byte)
225 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.
226 1 byte Mission 1st reactor flags.
0x02: elevator door opened.
0x04: scrolled at map init to show reactor.

Save Memory Bank 3/4

Table 1: FF7 Save Slot
Offset Length Description
66 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.
74 2 bytes Party GP (0-10000)
88 1 byte Number of chocobo stables owned
90 1 byte Number of occupied stables
91 1 byte Kalm Traveler sidequest Progression (details)
111 1 byte Aeris flower quest progress.
0x01: if we buy flower from Aeris.
127 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.
208 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: ater return to this map after seeing pillar.
0x10: after talking to right soldier twice (before mission in 5th reactor).
216 1 byte MDS7ST3 event flags.
0x04: when pair on station agreed with each other.
223 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.

Save Memory Bank B/C

Table 1: FF7 Save Slot
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

Table 1: FF7 Save Slot
Offset Length Description
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

Table 1: FF7 Save Slot
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)
Map: Off(80); Small(00); Large(40)

7 1 byte If not 0x00, game crashes
32 2 byte 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 prices 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

Items are loaded sequentially into data determined by the order they are placed in the KERNEL.BIN file. They are stored using 9 bits for an index and 7 bits for quantity:

In Binary:
XXXXXXXX QQQQQQQX

Where X is the index and Q is the quantity. There are 128 Items (including the blank ones) and 128 Weapons. These are indexes 0-255. The Armors and Accessories are then loaded sequentially (32 Armors then 32 Accessories) and indexed 256-319. If the index of the stored item is over 255 then the final bit there is 1. Quantity is limited to 99 (1100011 in binary).

Save Materia List

Materia is stored as an index followed by the amount of AP on that instance of Materia.

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 0x0FE7).