C64 Game Hacking tips

First you will need to save a copy of the game’s source code to a file. Load the game into WinVICE. Then in the emulator, click on the Snapshot menu and select Save snapshot image. Vice opens up a window and you can save it as a vsf file.

After the game is loaded into memory, I use the Regenerator tool to copy all of the program’s code to the clipboard. Click inside the Regenerator’s main view window and press Control A (Command A for Macintosh). This will highlight all the source code. Then right click on that window and select Copy Full.

Locating Memory Addresses

Once this is captured in memory with the Copy Full control, you will want to open a Word document and paste it in there. Now you have access to the entire source code.

Next start leafing through the assembly language in Microsoft Word and try to omit parts that are not segments of code. Often this can be noticed by seeing duplicate memory address in a row, such as LDA $8a LDA $8a, possibly seeing a line of NOP address, or a bunch of BYTES lined up. Usually these are used by the game for flags, tables, or sprite and character set data. If you use the  Control F (find) feature, Word will help you locate every specific message you are searching for. In this example, I am showing the memory locations found in the Commodore 64 Gauntlet game.

After you have accomplished removing parts of the code that are not necessary for hacking, begin to search through memory addresses that are related to areas that you want to change.

You can also locate specific subroutines this way, sprite data, sprite setup initialization, memory map areas, and so much more. Each game specifically will contain a lot of the same subroutines. It’s just your mission to find out where they are using this guide!

Mapping out Memory Instructions

In my previous example with Pitfall II, I observed a bunch of INC and DEC memory addresses to search for the player movement and enemy movement. Now this is a tedious process since I filled reams of paper with rows of INC and DEC to locate exactly what I need to change.

Once I had isolated the proper instructions, I used a colored marker and underline the matching addresses, being sure to use different colors for other memory addresses. In this specific example, you can see that I have isolated memory addresses for INC $8838 with the color orange, INC $826B using red, INC $826F with yellow, INC $883A in pink,  INC $8270 with green,  INC $8837 written in light blue, and so on. This correctly helps you correlate items that can be grouped together. Often you can locate specific functions such as character movement, life counter, screen shifting, and so much more.

After this process (which can often take an hour or more) then I can correctly see all the related instructions that are specific to accomplish the hacking feats I am attempting. Now I realize there are likely other ways to do this (such as using Hunt and Search commands), but I have yet to locate this in Regenerator. If you know something I don’t, please leave a comment.

Gauntlet C64 Game New Hacks

Okay now once you have isolated all of the matching memory address for increment, start to alter these in the monitor one by one, exit the monitor, and play the game in session.

By observing what may have changed you can start learning about the specific memory address that have been tweaked. Once you eventually find the correct memory address, you can reverse the direction of the player’s movements and eventually revert the direction of the enemies. Then you will know you have found the correct area of enemy movement control.

Stay tuned as I plan to eventually create a YouTube video showing the process step by step to make it easier to grasp. In a much later video, I will find time to release the new Gauntlet Hacking series and continue onto other games such as Indiana Jones and the Template of Doom, Ghostbusters, Double Dragon, and so much more.

I hope this guideline was helpful enough to get you started for now at least. Please comment on any questions you have below.