Super Mario RPG Save State Hacking Guide
Usable with the ZSNES emulator (.zst style save states)
Written by Thundergod (dragon_god_inferno@yahoo.com)

Version 1.0: First draft, all character information.
Version 2.0: Added all equipment/item modifier digits and non-character 
offsets.
Version 2.1: Corrected a few errors.
Version 2.2: Added the maximums of the stats (Coins, Frog Coins, Flower 
Points, and HP) for easy reference.
Version 3.0: Added an extra help section, since I received so many e-mails 
asking how to do this.
Version 3.1: Changed the layout slightly, for easier reading, and added a 
special note.
Version 3.2: Added an explanation of offsets.
Version 3.3: Minor corrections made.
Version 3.4: More minor changes.

Unpublished work Copyright 1999 Thundergod

This FAQ is for private and personal use only.  It can only be reproduced 
electronically, and if placed on a web page or site, may be altered as long 
as this disclaimer and the above copyright notice appears in full.  This FAQ 
is not to be used for profitable/promotional purposes; this includes being 
used by publishers of magazines, guides, books, etc. or being incorporated 
into magazines, etc. in ANY way. This FAQ was created and is owned by me, 
Thundergod <dragon_god_inferno@yahoo.com>. All copyrights and trademarks are 
acknowledged that are not specifically mentioned in this FAQ.  Please give 
credit where it is due.

Thanks go to:

Ragnarosen (ragnarosen@hotmail.com) for the form of the following paragraph, 
and for the section on hexadecimal.
Kao Megura (kmegura@yahoo.com) for the copyright statement.

To download ROMs and emulators for all systems, go to www.pe2000.net.

To alter the statistics of your characters through hacking into your save 
state (or .zst file), you'll need to go to Break Point Software 
(http://www.bpsoft.com) and download a program called "Hex Workshop." Once 
you're finished downloading and the program is finished running SETUP.EXE 
automatically, open Hex Workshop and use it to open any Super Mario RPG .zst 
files you may have.

NOTE: This Hacking Guide was designed for use with the ZSNES emulator, and 
was hacked with Break Point Software's Hex Workshop. This guide will not work 
with any other programs, as each one works with the save states differently.

-----------------------------------------------------------

OFFSETS:

Most of the questions I get anymore have to do with offsets  what are they, 
how do I tell what I'm editing, I don't understand hacking in general, etc.  
As far as I am concerned, the help Section is as thorough is it is going to 
get.  The only way I could explain it any better would be to point at the 
screen and say, "See that there?  That's what you need to change!"  Since I 
can't do that, you'll just have to be on your own if you need any help more 
detailed than what I have included below.

If you REALLY cannot figure out offsets and hacking on your own, read the Hex 
Workshop help file.  For the best explanation (with pictures), open the help 
file and click on the Find tab.  Search for offset, click on the first option 
(there should be four), and click on "How to Hex Edit" in the box below.  
Read over that very carefully, and you should have no trouble with hacking 
and finding offsets after that.  If you STILL do not understand, then odds 
are hacking is, quite seriously, not for you.  If you have reached this stage 
and do not understand, do not e-mail me, for I will not be able to help you.  
Do not ask me to hack files for you; I will ignore any request to do so.

-----------------------------------------------------------

Help!  Answers for commonly asked questions:

You don't use a cartridge in the SNES for this process.  Have you heard of 
emulation?  An emulator is a program on your PC (or Mac) that you can use to 
play the games you have.  First, you need to download an emulator (ZSNES is 
the best, in my opinion) and the Super Mario RPG ROM.

Once you have both, load up the ROM in your emulator.  If you are using 
ZSNES, press F2 to save the game's state.  This will make a copy of that 
EXACT moment in the game, so when you load the state (F4) it will reappear 
right at that point.  Now that you have a save state file (.zst for ZSNES), 
load up the Hex Workshop program, load the save state, and hack away!

This can only be done on the computer, when you are using an emulator (like 
ZSNES) and ROMs (in this case, Super Mario RPG.)  Go to www.pe2000.net for 
ROMs, emulators, and how to use them.  If you already know, and/or are 
already using an emulator, then move on to the next paragraph.  Otherwise, 
get them so that you can follow the rest of this.

Once you are using an emulator, you may have found out how to use save 
states.  Basically, save states save all the details of your game at that 
exact moment.  Thus, you can use it more often, and faster, than regular 
saving.  For example, if you want to save your state right before making a 
choice (like a fork in the road,) if you choose the wrong path, you can just 
load up your save state and choose again.

At any rate, to begin hacking, go to the Breakpoint software homepage 
(www.bpsoft.com) and download a copy of Hex Workshop.  Load up your favorite 
emulator (whatever that may be) and make a save state.  A ZSNES save state 
will have the same name as the ROM, and will have the file extension .ZST.  
For ZSNES (the best emulator , in my opinion) press F2 to save a state, and 
F4 to load a state.  Next, load up Hex Workshop and load the save state (ex: 
smrpg.zst)  Use the "go to" command, which should be under Edit, to got to 
the offset you are looking for.  For example, if the offset is 90B4, type 
90B4 and press enter, and it will take you right to it.

Keep in mind that this all uses the hexadecimal system, which means that not 
only is there 0 - 9, but also A - F.  A = 10, B = 11, and so on.  This is 
called hexadecimal because there are 16 numbers instead of ten.

So, let's say that offset 24041 is the offset for speed, and you want speed 
to be at max (255, FF in hexadecimal).  Use "go to" to go to offset 24041, 
and then type in FF.  Next, save the data, and open the emulator again.  Load 
the state, and voila! the character's speed will be at 255.  Note that you 
can make as many changes as you want before reloading the state (not just 
one, as in the example), and that you should close Hex Workshop before 
reloading the state.

There is no lv 99 in SMRPG.  Lv 30 is the max.  The best way to do this would 
be to change the exp to max.  I may have already said this in the guide, but 
I'll say it again here:

The max exp you can get is 9999.  This amount is what is needed to get you to 
lv 30.  However, because of the way it was programmed, the game will not 
allow any more level gains at two points: when a character has 9999 exp or is 
on lv 30, and both of those conditions usually happen at the same time.  To 
get to lv 30 most easily, set your exp to 9995 or something that can be 
gained in one or two fights.

To find a particular offset easily, use the "go to" command in the edit menu 
(I think).  Remember, because of the hexadecimal system you can also enter 
letters from A to F.  For example, if the offset is 2041A, use "go to" and 
type in 2041A.  The program will take you right to it!  Also, somewhere on 
the screen (bottom right corner I think) a small box will say what offset you 
are currently on (ex. Offset: 2041A).

Now for the entering of values.  Lets say you want to change Mario's attack 
to 99 (the max is 255).  To do that, go to the offset that changes attack (I 
forget the number) and type in two number (or letters from A to F)  The 
hexadecimal system is hard to grasp at first.  In the 99 example, 99 become 
63 in hexadecimal form.  In decimal (or standard) form, the base is ten.  
This means that for a number (say 1429) each digit is multiplied by an 
increasing power of ten.  For 1429, it looks like this:

(9*1)+(2*10)+(4*100)+(1*1000) or (9*10^0)+(2*10^1)+(4*10^2)+(1*10^3)

with the carat (^) referring to the power of the number.  If you already know 
how to work with powers, I  apologize for repeating this basic information.  
As you can see, the powers of the digits increase at we go along.  In 
hexadecimal, the base is 16, not 10, so there are a few changes.  Here's what 
1429 would look like in hexadecimal:

(9*1)+(2*16)+(4*256)+(1*4096) or (9*16^0)+(2*16^1)+(4*16^2)+(1*16^3)

Thus, 63 in hexadecimal equals 99 in decimal because (3*1)+(6*16) equals 99.  
The highest number you can get with one offset is 255 (FF in hexadecimal).

Two offset changes are much harder, because the number that you are trying to 
change is broken up into two pieces.  For these numbers, refer to the list of 
useful numbers at the beginning of the guide.  For example, input E703 to get 
999 (great for HP and money) and 0F27 to get 9999 (good for exp, but modify 
it slightly).  Thus, if the two offsets for exp are 2041C and 2041D, type in 
0F at offset 2041C and 27 at offset 2041D.  Keep in mind that the first 
offset controls the lower numbers (up to 255) so if you change that by one 
you will change the number by one.  However, the second offset controls the 
larger numbers, so a change of one might change the number by 100 or more.  
If you want, say, 9995 exp, lower the first offset from 0F to 0C, which is 
four numbers lower.

-----------------------------------------------------------------------------
---

Those new to hex and hex editors can read the following:
  - Typical hex editors display a file with "offsets" on the left of the
screen, "hex values" in the middle, and the "printed garbage" on the right
of the screen.
  - Offsets are the addresses. It may appear like this: 00000000
  - Hex values are the values. They may appear like this: E6 03 20 20 FF
  - The printed garbage is there only so humans can look at it. It's not
very pretty; it won't help you in most cases; don't worry about it.
  - This guide will represent the offsets in this format: #B9
  - The last number (0-9, A-F) in an offset is the COLUMN you need to go
to. So for the offset of #B9, go to the line "000000B0" and the 9th column
to the right.

-----------------------------------------------------------------------------
---

  - For the different offsets, here's a Quick List of the most commonly
used values:  

HEX VALUE       DECIMAL VALUE           USES
-----------------------------------------------------------------------
"63"            for "99"        used for levels, item quantities
"FF"            for "255"       used for statistics
"E7 03"         for "999"       used for HP, Max HP, statistics
"0F 27"         for "9999"      used for HP, Max HP
"FF FF"         for "65535"     used for HP, Max HP
"7F 96 98"      for "9,999,999" used for money or experience

-----------------------------------------------------------------------------
---

NOTE: For the two- or three-column HEX VALUES ("E7 03"), the numbers must
be entered "backward" as shown above to work properly.
    - When saving large numbers to computer language, the order of the hex
values are reversed.  If you open Windows Calculator and enter "999" in
decimal form and convert it to hexadecimal form, it will show "3E7" (note
that Calculator will remove any leading zeros).  To use this multi-column
hex value, add any necessary leading zeros (in this case, in front of the
"3") to make even pairs ("03 E7").  Put the number pairs in reverse order
("E7 03") in the smrpg.zst files.
    - THIS DOES NOT MEAN TO REVERSE THE VALUES!  "03 E7" must be entered
as "E7 03", not "30 7E"!  For the basic rule of thumb, number pairs are
entered like this: #2 #1 (or #3 #2 #1 for very large numbers)

-----------------------------------------------------------

Equipment: 20477  20494
Items: 20495  204B1 (204B2 is the trash can, so change at your own risk)
Special Items: 204B3  204C1
Coins: 204C2, 204C3
Current Flower Points: 204C4 (99 max)
Maximum Flower Points: 204C5 (99 max)
Frog Coins: 204C6, 204C7 (999 max)
Player Name: 204C8  204CF


CHARACTER STATISTICS:

Mario:

Level: 20413
Current HP: 20414, 20415
Maximum HP: 20416, 20417
Speed: 20418
Attack: 20419
Defense: 2041A
M. Attack: 2041B
M. Defense: 2041C
Exp: 2041D, 2041E
Equipped Weapon: 2041F
Equipped Armor: 20420
Equipped Accessory: 20421
Technique List: 20423

Toadstool:

Level: 20427
Current HP: 20428, 20429
Maximum HP: 2042A, 2042B
Speed: 2042C
Attack: 2042D
Defense: 2042F
M. Attack: 20430
M. Defense: 20431
Exp: 20432, 20433
Equipped Weapon: 20434
Equipped Armor: 20435
Equipped Accessory: 20436
Technique List: 20438, 20439

Bowser:

Level: 2043B
Current HP: 2043C, 2043D
Maximum HP: 2043E, 2043F
Speed: 20440
Attack: 20441
Defense: 20442
M. Attack: 20443
M. Defense: 20444
Exp: 20445, 20446
Equipped Weapon: 20447
Equipped Armor: 20448
Equipped Accessory: 20449
Technique List: 2044C

Geno:

Level: 2044F
Current HP: 20450, 20451
Maximum HP: 20452, 20453
Speed: 20454
Attack: 20455
Defense: 20456
M. Attack: 20457
M. Defense: 20458
Exp: 20459, 2045A
Equipped Weapon: 2045B
Equipped Armor: 2045C
Equipped Accessory: 2045D
Technique List: 20461

Mallow:

Level: 20463
Current HP: 20464, 20465
Maximum HP: 20466, 20467
Speed: 20468
Attack: 20469
Defense: 2046A
M. Attack: 2046B
M. Defense: 2046C
Experience: 2046D, 2046E
Equipped Weapon: 2046F
Equipped Armor: 20470
Equipped Accessory: 20471
Technique List: 20475, 20476

Notes:

The five main stats (speed, attack, etc.) that can be altered are the base 
stats.  Any bonuses from weapons are added during the game, and are not 
included here.  The maximum value for the base stats is 255, or FF in 
hexadecimal.  Maximum HP is 999.

The experience number is the total experience of the character, and the 
experience needed to reach the next level is derived from that.  If you input 
a value greater than of the needed experience, after one fight the 
character's level will raise to whatever it should be with that amount of 
experience.  However, if you input 9999 (0F 27 in hexadecimal) the game stops 
keeping track of experience, so the character will gain no levels.

Similarly, changing the level stat will only raise the amount of needed 
experience, delaying the next level up, without giving the character the 
bonuses and techniques for the levels that were skipped over.  Also, if the 
character's level is set to 30, the game stop keeping track of experience, 
and the character will gain no levels.  In short, changing the level stat is 
a bad idea.

I advise against messing with the technique lists, as what tests I have done 
have proved little.  For example, Toadstool's and Mallow's lists are broken 
up into two pieces, one for use out of combat and one for use in combat only, 
thus they have two offsets each.  Bowser only uses one offset, but inputting 
some values give him only half of his techniques and others give him some of 
Geno's techniques.  For now, experiment with these at your own risk until I 
solve this bizarre puzzle.  Of course, if you want to solve it yourself, go 
right ahead!  I can use the help.

MODIFIER DIGITS FOR ITEMS AND EQUIPMENT:

* = Dummy item, unusable

00: Weapon*
01: Armor*
02: Accessory*
03: Space*
04: Space*
05: Hammer
06: Froggie Stick
07: Nok Nok Shell
08: Punch Glove
09: Finger Shot
0A: Cymbals
0B: Chomp
0C: Masher
0D: Chomp Shell
0E: Super Hammer
0F: Hand Gun
10: Whomp Glove
11: Slap Glove
12: Troopa Shell
13: Parasol
14: Hurly Glove
15: Double Punch
16: Ribbit Stick
17: Spiked Link
18: Mega Glove
19: War Fan
1A: Hand Cannon
1B: Sticky Glove
1C: Ultra Hammer
1D: Super Slap
1E: Drill Claw
1F: Star Gun
20: Sonic Cymbal
21: Lazy Shell
22: Frying Pan
23: Hammer*
24: Spare*
25: Shirt
26: Pants
27: Thick Shirt
28: Thick Pants
29: Mega Shirt
2A: Mega Pants
2B: Work Pants
2C: Mega Cape
2D: Happy Shirt
2E: Happy Pants
2F: Happy Cape
30: Happy Shell
31: Polka Dress
32: Sailor Shirt
33: Sailor Pants
34: Sailor Cape
35: Nautical Dress
36: Courage Shell
37: Fuzzy Shirt
38: Fuzzy Pants
39: Fuzzy Cape
3A: Fuzzy Dress
3B: Fire Shirt
3C: Fire Pants
3D: Fire Cape
3E: Fire Shell
3F: Fire Dress
40: Hero Shirt
41: Prince Pants
42: Star Cape
43: Heal Shell
44: Royal Dress
45: Super Shirt
46: Lazy Shell
47: Spare*
48: Spare*
49: Spare*
4A: Zoom Shoes
4B: Safety Badge
4C: Jump Shoes
4D: Safety Ring
4E: Amulet
4F: Scrooge Ring
50: Exp Booster
51: Attack Scarf
52: Rare Scarf
53: B'Tub Ring
54: Antidote Pin
55: Wake Up Pin
56: Fearless Pin
57: Trueform Pin
58: Coin Trick
59: Ghost Medal
5A: Jinx Belt
5B: Feather
5C: Troopa Pin
5D: Signal Ring
5E: Quartz Charm
5F: Spare*
60: Mushroom
61: Mid Mushroom
62: Max Mushroom
63: Honey Syrup
64: Maple Syrup
65: Royal Syrup
66: Pick Me Up
67: Able Juice
68: Bracer
69: Energizer
6A: Yoshi-Ade
6B: Red Essence
6C: KeroKero Cola
6D: Yoshi Cookie
6E: Pure Water
6F: Sleepy Bomb
70: Bad Mushroom
71: Fire Bomb
72: Ice Bomb
73: Flower Tab
74: Flower Jar
75: Flower Box
76: Yoshi Candy
77: Froggie Drink
78: Muku Cookie
79: Elixer
7A: Megaelixer
7B: See Ya
7C: Temple Key
7D: Goodie Bag
7E: Earlier Times
7F: Freshen Up
80: Rare Frog Coin
81: Wallet
82: Cricket Pie
83: Rock Candy
84: Castle Key 1
85: Debug Bomb*
86: Castle Key 2
87: Bambino Bomb
88: Sheep Attack
89: Carbo Cookie
8A: Shiny Stone
8B: DUMMY*
8C: Room Key
8D: Elder Key
8E: Shed Key
8F: Lamb's Lure
90: Fright Bomb
91: Mystery Egg
92: Beetle Box
93: Beetle Box
94: Luck Jewel
95: DUMMY*
96: Soprano Card
97: Alto Card
98: Tenor Card
99: Cystalline
9A: Power Blast
9B: Wilted Shroom
9C: Rotten Mush
9D: Moldy Mush
9E: Seed
9F: Fertilizer
A0: Waste Basket
A1: Big Boo Flag
A2: Dry Bones Flag
A3: Greaper Flag
A4: Secret Game
A5: S. Crow Bomb*
A6: Cricket Jam
A7: Bane Bomb*
A8: Doom Bomb*
A9: Fear Bomb*
AA: Sleep Bomb*
AB: Mute Bomb*
AC: Fireworks
AD: Bomb*
AE: Bright Card
AF: Mushroom
B0: Star Egg
B1 - FE: DUMMY*
FF: Nothing (clears any equipment/item in that slot)