image image image image image image image image image image image image image image

Making Cheats with Zsnes

One of the neatest abilities of zsnes is being able to create your own cheats. Cheat creation is not difficult, but there are a few basics you should know about.

1) Each cheat code refers to a memory address. They are hexadecimal numbers. To make cheat creation easier, it is helpful to know what hexadecimal is. Hexidecimal is a base 16 numbering system. That means it has numbers from 0-9, plus A-F. For instance, the number 15 in hexidecimal is F. The number 16 is 10.

2) For most codes, once you find the memory address you want to alter, you only have to worry about changing the last two numbers in the address. This will give variations in the code, allowing you to edit stats, for instance. It is also helpful to know this when searching for codes, especially if you know a code has a particular stats value, you can usually find the corresponding code.

3) Searching for codes is a simple process, I will give an example from Final Fantasy II:

In this example, I will try and make a code for changing the character displayed on the map. First, I started on the map screen with Cecil selected.

I then pressed [ESC] then choose the Seach function on the cheats menu.

In the menu that pops up, I selected a 1 byte size (I assumed that the required code only used one byte), I selected Hex format, for ease of use (you can try base 10, but this is likely to be more confusing), and for this seach, I assumed that a comparative search would be easiest, as I do not know the exact value that the sprite uses.

After hitting start, you get this screen. Hit [ESC] to return to the game.

After that, I pressed R to change the onscreen character to Kain from Cecil.

Press [ESC] again, and return to the Search menu from the Cheats options. Since you changed the onscreen character, there should be a change in value, so I did a search for all non equal (!=) values. Select that, and hit search.

After the search, the 131072 options are reduced greatly to a mere 330 options. However, this is still far too great a number, so further searching is required.

Press [ESC] again to return to your game. I then changed the onscreen character back to Cecil again. Press [ESC] again and return to the Search menu in the Cheats options. This time, since Cecil is back on the screen, the value should be equivalent to before. So, I did a search of an equal value.

This reduced the number of options to 82 from 330.

This is still to many, so I changed back to Kain again, but this time, instead of searching for non-equal values, I made an assuption that Kain's sprite had a higher hex value than Cecil's (which is the rule in this game). So I did a search for all values that are higher than the original.

Doing that reduced the amount of entries to a more manageable 11. I then hit the view button to see which codes were available. These values were roughly around the same place in memory and the Value (current address value) and Pvalue (the value of the address when you started your search) were one off, which is what I was expecting. However, this is looking dissapointing, as I was expecing the value of the character sprites to be something like 01 or 02.

Henceforth, I went and did another search after changing the sprite back to Cecil, and it reduced the number down to 5.

I decided to check out the first code "7F5803" which had the value of 26. Click on the Add button to get to this menu. In the Enter New Value option, you have to choose an alternative value to 26, or you can set it to 26, and the value will remain fixed. Enter a name for your cheat in the Cheat Description. Hit the add button to add it to the cheats.

On the cheat menu, your test cheat will be on the list. It is turned on by default; you can turn it off my double clicking the cheat.

Because the value was alternating between 26 and 27, I inserted another code "7F580328" to test what happened if I changed that value competely.

After this, I pressed [ESC] to return to the game. Now, as you can see, this code actually has nothing to do with the character sprites; it changes the properties of the water movement! I assume that all the codes I had found affected water, so this method was not ideal for this situation.

I removed that code, and started a new search. This time, I choose to go with an exact value search, which allows you to search for a particular value for a memory address.

I entered a value of 01, because I assume that Cecil's sprite is the 01 value. I then clicked on search.

This leaves a fair amount of codes, but I then switched to Kain, and searched for 02 (I assumed Kain's sprite would come after Cecil's). I switched back to Cecil, and searched 01 again. The results were quite satisfactory.

One result. Yeah! I proceeded to add this code.

Now, I tried this code out. It did affect the character sprite properties, but not in the way I was hoping.

7E1703xx merely made it so that Cecil's spite was always selected on the screen.

However, if you get these results, don't be discouraged! You can change values other than the last two! What I did after this, is changed the 3rd value.

7E1704xx turned your character invisible, but it is as if you were riding a black Chocobo! With this code, you can fly around most of the map, and go to places you aren't supposed to go! If you turn off the code, you sometimes return the game back to normal, depending on what value you choose for xx.

7E1705xx did affect the character sprite. If affected the state the of the sprite. Depending on the value of xx, you could have the sprite permanently facing one direction, have him bowing his head, or even have the death sprite!


Now this is a basic way to find codes. If you are looking for a particular value, it certainly make your life easier, but try both methods. After trying it out a few times, you can be a cheats master!

© Evan G. This site made by a Canadian, and fueled by beer. Do not use material on this site without permission.