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