How to hack Phantasy Star 2 savestates
Hacking RPG Inventories
Next we'll try something a little tougher - changing your inventory in Phantasy Star 2. For this experiment you'll need a Phantasy Star 2 ROM, Genecyst, and of course Hex Workshop.
Run Genecyst and load your PS2 ROM. Begin a new game.
At your first opportunity, go to the item shop. Buy a Monomate and answer Yes when asked if you need anything else.
Once you're back to the shop's main items menu, save the game state to slot 0.
Buy another Monomate and again say Yes, you do need something else.
Back at the shop's main items menu, save the game to slot 1.
The files pstar2.gs0 and pstar2.gs1 should now be saved to your disk. (Again, the filenames depend on your ROM's filename.) Open both in Hex Workshop.
This time we're not going to bother writing down all the hex offsets. Now that you have some clue what you're doing, we'll try to save a little time by making a logical guess as to what may have changed.
RPG items are usually stored in a game save as single bytes. A potion might have the value 15, a sword the value B7. If there is no item in a particular spot in your inventory, it's usually represented by a 00.
So in pstar2.gs0, you have a slot in your inventory that is empty, but in pstar2.gs1, that same slot is taken up by a Monomate. You can reasonably guess that in pstar.gs0 the byte that represents that inventory slot is 00, but in pstar2.gs1, that byte is some value higher than 00.
Run a comparison between pstar2.gs0 and pstar2.gs1 in Hex Workshop. Write down only the offsets that have changed from 00 in pstar2.gs0 to a value higher than 00 in pstar2.gs1. There will probably only be one or two.
Now change these offsets in pstar2.gs0 to match their twin in pstar2.gs1, one at a time. You should test your changes each time by loading pstar2.gs0 into Genecyst, leaving the shop, and checking your items menu. If you suddenly have a second Monomate, you've found the offset you need to change. (For me it was offset E4A4. If you were working with a different inventory slot it might be different for you, but it should still be a nearby offset.)
Now comes the fun part. You can set the byte at the offset you've discovered to any value you want, and you'll get a different item for each. Try setting it to 12, load it and test it. Your Monomate will turn into a Dimate. If you keep changing, loading, and testing values, you'll find the following:
11 Monomate 17 Headgear
12 Dimate 18 Ribbon
13 Trimate 19 FiberGear
14 Antidote 1A Sil Ribbon
15 Star Mist 1B Sil Crown
16 Moon Dew 1C TitaniGear
If you're familiar with Phantasy Star 2, you've probably noticed that the items seem to be getting more and more valuable as the hex value increases. If you keep raising the value, you could eventually wind up with the best weapons and armor in the game. In some games (like Final Fantasy II), it's possible to use this technique to find items that were removed from the U.S. version and aren't accessible by normal means. Once you've hacked an item into the save state, it can be equipped and traded like any other item, too.
Next experiment... Go back into the shop and buy all the Monomates you and Nei can carry. Save the game state to slot 0 and open pstar2.gs0 in Hex Workshop. (If you already had it open, you need to close the file and open it again or the changes won't appear. Go to hex offset E4A4. Notice anything different?
The bytes surrounding offset E4A4 are all filled with the value 11. You can also see a second string of 11's starting at E4E4. If you'll recall from earlier, 11 is the value for a Monomate. These are all the Monomates you just bought and saved. The second string of 11's is Nei's inventory.
Go to all the bytes that just changed to 11, and change them to 1C. (The value for a TitaniGear.) Save the file, and load it in Genecyst. Your inventory should now be filled with Titanigears. You can change any of these bytes you just discovered to any value you want, and get any item you want.
These are just a couple examples of your newfound abilities. With a little creativity, you can do anything. Apply this technique to Metroid, and you can use it to get special items right at the start of the game. Try it on Final Fantasy, and you can set any character's maximum HP to any value you want. It'll work on save states for SNES or in fact any system whose emulator supports them.
So what're you waiting for? Go test your skills on your favorite game. If you find any useful offsets, be sure to E-mail me at thespook@novia.net. Good luck and happy hacking!