I thought it was time I shared some of my hacking trials and tribulations, and allow you into the world of basic Commodore 64 game hacking… and I mean basic!
Since 2011 I have been creating and sharing my crazy hacks of various types of Commodore 64 games, and adding some much needed features (not just trainers!) to give them a few more minutes of excitement.
Today I have been working on hacking the code to Mermaid Madness, which was originally released by Electric Dreams, and then on the Firebird Software budget label. It was a game I first played back in 1986 whilst visiting family in Italy. The game appeared on a compilation covertape on an Italian magazine, which seemed to think it was acceptable to release cracked version of games even before they were released in the UK. It was also how I got to play games such as Bombo and Infiltrator before anyone else!
When first hacking a game, I always start by familiarising myself with how it’s played and what is involved to complete each task to get to the game ending. In this case, there’s a lot of exploring and collecting objects to complete tasks.
After having a bit of a play, I moved on to investigating the code, which is done using ICU64 and also the Action Replay Cartridge monitor. I load the game into ICU64 and study the code to see what happens to it when you carry out certain tasks – such as dying, jumping, hitting barriers, losing energy, collecting objects, etc. Then, I search for those specific memory locations using the ARC monitor and see what the code is doing and how it’s manipulating these particular points in the game. I then start to physically manipulate the code to change the outcome. For example, if losing energy means that $0024 decreases, then I change the decrease command DEC ($C6) to a LDA ($A5) command. I restart the game to see if this works, and then I note the new feature down in my crazy hack pad (I’m currently on Pad No. 21). This is done over and over again to the point that I’ve exhausted all the features I can think of.
After I have a few pages of notes, I start to code the actual crazy hack. But just before I do, I need to find a spare bit of memory within the game code. In this case, there is plenty of space at $C240 – $C600, which I quite happily highjack. Then, I find a point within the game that I can jump out of the game, into my code, and then back into the game again without it crashing. I settle with $43B8, which has the $DC01 command in place.
Then begins the actual coding… so far I have coded in the following key-press features:
1 = Freeze Energy
2 = Unfreeze Energy
3 = Freeze Air Tank
4 = Unfreeze Air Tank
5 = Freeze Nasties
6 = Unfreeze Nasties
7 = Through Scenery On
8 = Through Scenery Off
I still have the following features to find and code in:
= Stop Floating Up
= Float Up
= Teleport Left
= Teleport Middle
= Teleport Right
= Game Ending!
= Colour changes
I’m guessing that I’ll be able to create a crazy hack with around 25 new features to play with.
That’s it for this instalment. More soon!