Jump to content

More ROM Hacking

Recommended Posts

Today, I went with Lock 'N' Chase. This hack will give both players infinite lives. Be aware, there are two different versions of the game, so make sure you use the right one.


More detailed instructions on how to enable hacks is available in the thread Vectron - No More Enemies.


For the original version (without the proper copyright symbol):

p 59cb 34 ; Both players never lose lives

For the 8K version (with the proper copyright symbol):

p 5c26 34 ; Both players never lose lives


There are three sets of variables for such things as lives and the score: one for the active player, one for Player 1, and one for Player 2. When control switches to the other player, the "active player" variables are backed up for the player whose turn is ending, and the variables for the player whose turn is starting are written to the "active player" variables. This patch affects the "active player" lives counter, so it works for both players.


There is only one drawback. The game loop continually watches to see if the active player's lives counter falls out of the range 1-9. If you reach 10 lives, the game ends immediately. I think you only gain a life at 20,000 points, and since you start with 5 lives, that means you have to roll the score over 4 times for that to happen. The score rolls over at 300,000 points, since it's a signed 16-bit variable with one padded zero (meaning it can't go higher than "327,670").


Now you can see all ten treasures, for those of us who couldn't make it to Level 10 up until now.

  • Like 1
Link to comment
Share on other sites

Here is another one. This time it's for Advanced Dungeons & Dragons. (I haven't tested this on the version titled "Adventure".)


For infinite arrows, add this line:

p 5297 34

For infinite lives, add these two lines:

p 5e7d 34

p 5e80 204


Now for an exaplanation.


For "infinite arrows," I replaced the DECR instruction that decrements your arrow counter when you fire an arrow with a NOP instruction. You might be wondering, what if you lose your arrows to a spider? Turns out it doesn't matter. The spiders can still take your arrows, but the game decrements the register that temporarily stores your arrow counter and then performs a BMI instruction, meaning it checks to see if your arrow count would now be a negative number to know if you had no arrows to begin with. That patch then is all you need, so you can still fire an arrow even if a spider got them all.


As for the lives, it wasn't enough to just replace the DECR instruction with a NOP. After writing back to the "lives" variable, it performs a BNEQ to see if the game should end. Therefore, the game would end after losing only one life, and you would be back on the map screen with three dots blinking instead of a tombstone. That additional line replaces the BNEQ with a BEQ to prevent that from happening.


So now you have infinite lives as well as arrows. Happy hunting.

  • Like 4
Link to comment
Share on other sites

Today I give you Space Armada hacks.



p 5044 ff ; Enable easter eggs if no keys are depressed on left controller at startup

p 504a ff ; Easter egg 1 - SPAZ ARMADA (if no keys depressed on right controller)

p 504e ff ; Easter egg 2 - SPACE BEASTIES (if no keys depressed on right controller)

p 50ae ff ; Start on level 254 in Practice Mode if easter egg is enabled


p 517c 6 ; Start with 2 additional lives

p 517f 11 ; |


p 5218 2b8 ; Enemies move very slow when level starts

p 5219 2 ; |

p 574e 34 ; Enemies do not speed up throughout the level

p 574f 34 ; |



Here are a couple more for fun:

p 512a 6 ; Slowest speed in Game Mode (like pressing 3 on title screen)

p 597f 34 ; Ground turns to ice


Obviously, comment out one of the easter eggs. Otherwise, you'll get the first one by default.


If you want to see just how fast the enemies can be, try commenting out the lines to slow them down.

Link to comment
Share on other sites

Today I went with Dig Dug. I was originally trying to stop the clock in Frog Bog, but I'll come back to it another time.



p 5b92 34 ; Infinite lives

p 5b93 204 ; |


p 5daf 12 ; Start on level 18

p 5db1 173 ; |


p 5e13 ff ; Always only 1 enemy in each monster pen



Your lives counter is stored in $0175, and the level number is stored in $0173. I replaced the code that writes #$3 to the lives counter, to write #$12 (hexadecimal for 18) to the level number instead. Fortunately, this doesn't give us an automatic GAME OVER, but now there's no game intro. There are 18 unique levels. Don't start at anything higher, or else you'll get no vegetables.


Normally, you start getting 2 enemies in each monster pen when you reach Level 7. Now, you don't have to worry about that at all. Time to figure out what all those vegetables are supposed to be.

Link to comment
Share on other sites

  • 6 months later...

Happy New Year of the Amico!


I had some time to kill today, and I decided to hack another ROM.  Today it was Scooby Doo's Maze Chase.  I still need to test this out in 2-Player mode though.


p 5807 34  ; Infinite bones
p 5a69 34  ; Infinite lives


It seems the hour (and with it, the difficulty level and color of the maze) changes with your score.  It's recalculated when you earn points and when you lose a life.  Before you've lost any lives, it increments every 2,000 points.  After you've lost 2 lives, it seems to increment every 5,000 points.  What's going on after losing 1 life beats me.


After 12:00, there's a "thirteenth hour" when the clock stays on 12 but the maze turns invisible.  Also, you earn an extra life at 25,000 points.


The bones counter is retained at memory address $199 and can go up to 255.  You can see up to 14 bones displayed at a time.  The lives counter is retained at memory address $1b2 and can also be up to 255, but you will only see three extra lives displayed if you set it higher than 4.


As for the score, it's retained at address $35c and is a 16-bit value.  The game displays 4 digits and pads 1 zero.  (So, value $6c4, or 2,500 decimal, is displayed as "25,000".)  The high score is retained in two consecutive 8-bit memory addresses.

  • Like 2
Link to comment
Share on other sites

I guess it wouldn't have hurt to fully test that last one before posting.  Here is the actual line for infinite lives.  The previous one just caused you to start the game with one extra life.


p 5a69 34  ; Start with 4 lives

p 5bca 34  ; Infinite lives

  • Like 1
Link to comment
Share on other sites

One more simple one today for the fun of it - Armor Battle.


p 505c 7  ; Both players start with 5 tanks instead of 50.


This works with both the Fast and Slow versions, as far as I can tell.


The reason there's a poked value of 7 is that the game deducts 2 tanks from both players before starting the round.  Also, that same value is written to both memory addresses where the players' tank counters are stored ($15d and $15e), so there's no handicapping.



Also, to wrap up Scooby Doo's Maze Chase, those pokes work for both players, because the memory addresses affected are for the current player.  One more thing: at 100,000 points, the score rolls over to zero, and there's a "fourteenth hour."

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...