View Page Source

Revision (current)
Last Updated by CloakTheLurker on 7/10/2023 11:50 PM
Back to Page

%%TOC%%
!!! Cheating with BizHawk
----
!! IMPORTANT!
! Cheating is generally NOT allowed in, RTA runs or TAS movies.
! Cheating is NOT recommend for a Movie recorded in BizHawk. It will more than likely, desync quickly if not outright.
----
!! Note:
! This guide can also help you create RAM Watches for games.
! This does NOT make a core that does NOT support cheats, magically support cheats.
----
!! How to Start
There's two ways to cheat using BizHawk.
*One: Use RAW cheat codes
*Two: Use codes for one or some or all of the following devices;
**Action Replay
**CodeBreaker
**Game Genie
**GameShark

To use RAW Codes, requires some work. While the cheat device codes, require other methods of work. However, both code types work inside BizHawk.

If you want to use Cheat Device codes, then the section [Bizhawk/Cheat#CodeConverterTool|Code Converter Tool] would be of interest to you.

If you want to use RAW codes, then the sections [Bizhawk/Cheat#RamAddressesDomainsAndValues|RAM Addresses, Domains and Values], [Bizhawk/Cheat#RamWatch|RAM Watch] and [Bizhawk/Cheat#CheatDialog|Cheat Dialog] would be of interest to you.

If you want to find cheats, [https://gamehacking.org/|GameHacking.org] is a great resource for all kinds of cheat codes.

!!RAM Addresses, Domains and Values

! FAQ:
*Q: What's a RAM Address?
*A: A RAM Address is a location in RAM where the Game puts its data. Things like score, lives, stats, speed, location and plenty of other things, are usually stored in RAM.

*Q: What's the difference between SaveRAM and RAM?
*A: SaveRAM is for your save data, while RAM is for the game's data. RAM is lost when the power is lost, while SaveRAM is not lost when power is lost.

*Q: What's ROM?
*A: ROM is the game's data.  Level layout, rules the game has, sprites/model data are examples of ROM data.

*Q: What's a Memory Domain?
*A: Since game consoles use various parts to make the game work, like the CPU (Brain) and the Graphics Processor, these parts sometimes have their own Memory Domains so they can work on what matters to them without worrying about sharing resources with others.

*Q: What's the most important Memory Domain?
*A: Usually, most cheats go into the System Bus domain. The System Bus domain is basically, "ALL RAM addresses."

*Q: What do I do if the current core doesn't support System Bus?
*A: Experment with the Memory Domains in the Dropdown box for Cheats.

!!RAM Watch

! Usage

When you create a new RAM Watch, you are given several paramaters to fill in.
*Address
*Notes
*Size
*Display Type
*Big Endian
*Memory Domain

The Address is the current RAM Address you want to watch. Notes, is a description for the RAM Watch you are creating. Size is the Byte Size for the RAM Address you are looking at. Display Type changes how the RAM Watch tool shows your value(s). Big Endian sets the byte order to Least important to most important. Memory Domain, is what RAM Domain you want to watch.


!!Cheat Dialog

! How to use it
The Cheat Dialog is like the RAM Watch dialog, except instead of only reading RAM values, it can write them as well.

If you are using RAW Cheats, this is the tool to use to get those cheats working.

! FAQ:
*Q: What does Name mean?
*A: This allows you do give yourself a nice name to keep track of what this cheat is doing or what it's for.

*Q: What does Address mean?
*A: Address means the RAM Address you are going to be sending the Value to.

*Q: What does Value mean?
*A: Value means the Value you are going to be writing to the RAM Address.

*Q: What does Compare mean?
*A: Compare means, "If the value at the Address you defined above, is this, then set it to Value instead." In a Shooter game, I setup a compare to 3, and value to 8. When I had 3 shots left, I instantly went back to 8 shots.

*Q: What does Domain mean?
*A: This is where the RAM Address is. Usually, the System Bus Domain is what you want.

*Q: What does Size mean?
*A: Size is the size, in Bytes of the Value you are writing. If your size selection is wrong, sometimes, nothing bad happens, sometimes, the game crashes or horribly glitches out.

*Q: How do I determine the Size of my cheat?
*A: If the cheat is writing One or Two numbers or values, it is 1 Byte. If the cheat is writing Three or Four values, it's 2 Bytes. If the Cheat is writing Seven or Eight values, it is 4 Bytes. There is nothing higher than this.

*Q: What does Display As Mean?
*A: This changes how the data is shown to you. Not all values work with all display types. Hex is the most compatible.

*Q: What's Big Endian?
*A: This is special RAM Storage method for some systems. Instead of data being "Most important to least important" order, it's "Least important to most important." The N64 uses this method. Most systems do NOT use this. When in doubt, try RAM Watch on the Address before setting up the Value.

*Q: What if my code requires I compare an address for a value, then set another address up with another value?
*A: This is not supported by BizHawk as of 1.11.3. It will be added, eventually.


!!Code Converter Tool
! About
The Code Converter Tool is a custom built form for converting almost all cheat codes for the major cheat devices, into RAW cheats for BizHawk. The tool is pretty smart.

! Usage
To use the Code Converter Tool is pretty simple. Open a ROM in a core that supports Cheats. The Tool will become enabled. Enter a description, if you want to. Enter the Code you want to add. Click on Convert. Enjoy.

! FAQ
*Q: How does it know what kind of cheat I am entering?
*A: For the most part, the tool recognizes the code through various parsing methods. Basically, computer magic. Lots of it.

*Q: How come GBA Cheat code handling is so bad?
*A: The GBA cheat devices use Encryption to protect them. This causes problems for the tool since it has to decrypt the code, then hope it works. A future version of this tool will become smarter with GBA code handling.

*Q: I got an error message.
*A: This is usually from input errors. Double check the input to make sure it's right. If it is, then the tool is not working correctly or the code is wrong.