The Complete Guide to Phantasy Star III

Save State Hacking



Contents

Introduction - Overview of this guide & what you'll need
Terminology - Terms used in this guide
Compatible Emulators
Character Stats & Meseta
Inventory
Events
Party Location
Links - Other Phantasy Star III hacking resources


 

Introduction

This guide presumes you have working knowledge of using a hex editor.. maybe even hacked a few save games before. If you've never used a hex editor, or aren't sure what a hex editor is, this guide probably isn't for you. I'll try to make it simple though.

Unless otherwise noted, all numbers appear in hexadecimal format.

Always consider making a backup of a save game before editing it. Blah, blah, blah, author not responsible for anything you mess-up and so on.


 

Terminology

-"main character" refers to the main character of each generation: Rhys, Ayn, Nial, Adan, Aron, Sean, or Crys.
-"fourth character" refers to the fourth character that joins the party (i.e. Lyle, Ryan, Gywn, Thea).
-"fifth character" refers to the fifth character that joins the party (i.e. Lena, Sari).


 

Compatible Emulators

-This guide has only been tested with Genecyst & Gens save states (*.gs#).
-This guide will NOT work with save backup images (*.sav,*.gsv). Hacking a memory backup file typically doesn't work, usually you receive a "bad data" error when loading the game. I assume there's a checksum somewhere that needs to be recomputed.
-Really any emulator that can dump the contents of the Genesis memory into a save state should be compatible. Again, please make a backup if you are unsure.


 

Character Stats & Meseta

Do not edit character levels directly. Instead, edit the experience points (XP) for the character. After winning a battle levels will be adjusted automatically. The XP for each character is stored at the following addresses:

Main charatcer: E532
Mieu: E5B2
Wren: E632
Fourth character: E6B2
Fifth character: E732

The XP value is stored over 4 bytes and can range in value from 0 to 05F5E0FF (0-99999999).

Meseta is stored at address E4B8 and can also range in value from 0 to 05F5E0FF (0-99999999).

Example:

Example


 

Inventory

Inventory for each character is stored in 32 bits. The first two bits are used to count the number of bits used to hold in the character's inventory. For example a value of 00 04 signifies a character holding 4 bits of items (2 items total) and 00 1C signifies. a character holding 28 bits of items (14 items). The most a character can carry is 15 items so the first bit is always 00. The next 30 bits are the character's inventory, each item is represented by a 2 bit number.

Addresses:
main character: count=102F8-102F9 inventory=102FA-10317
Mieu: count=10318-10319 inventory=1031A-10337
Wren: count=10338-10339 inventory=1033A-10357
fourth character: count=10358-10359 inventory=1035A-10377
fifth character: count=10378-10379 inventory=1037A-10397

[List of item codes]

It is not recommended to equip items through hacking the save state, because the character stats will not be adjusted to reflect the equipment. Instead, place the desired items in inventory and equip them from within the game, this will ensure that stats are adjusted properly.

Giving your party the parts for Wren does not make them "usable", you must also set the "item active" event before they will function. The same goes for the gems. See the next section for more information on this.


 

Events

As noted in the last section, adding an "event item" doesn't make it usable until the game event is activated. A "game event" is simply a boolean value (00=false, FF=true) in memory.

For example, here are the game events for "aero parts active" and "Laya's pendant active":

Hex events

As you can see, there are a lot of 00's in there which means there a lot of events to find still.

[List of known event flags]

Submissions are more than welcome :) Some event combinations will cause the game to crash when other events are triggered. Some events do not take effect until you enter and exit a town, this seems to be the case with the gem events.

Example of editing events:
Rhys vs. Dark Force

Thanks to Fran\E7ois Duchesneau for the original information on event editing.


 

Party Location

**editing party location can cause some incredible zaniness - do so with caution**
Party physical x-location: E480-E481
Party physical y-location: E482-E483
Party sprite x-location: E500-E501
Party sprite y-location: E502-E503
The physical location values and sprite location values should always be equal.

Nifty examples of editing location:
The Wacky Adventures of Rhys
The Wacky Adventures of Rhys (Alternate)


 

Links

PSIII Save State Hacking Guide by Thorr, contains much of the information here and more
Hapsby, open source save game editor that supports PSIII



Related