Jump to content
IGNORED

A few hacks...


Luc

Recommended Posts

Here's a few hacks I made myself recently, just for fun.

 

- Asterix infinite lives

- Centipede infinite lives

- Demolition Herby infinite cars

- Frostbyte infinite lives

- Galaxian infinite lives

- H.E.R.O. infinite lives + infinite dynamite

- Haunted House infinite lives

- Jungle Hunt (too silly really): infinite lives, lots of extra time, only two vines to catch, two crocs to kill and two rocks to jump over.

- Jr. Pac Man - infinite lives

- Kangaroo: infinites lives + infinite time

- Midnight Magic: infinite balls

- Montezuma's Revenge: infinite lives

 

hacks.zip

Link to comment
Share on other sites

yes, they are great

now, if you could make tutankham and miner 2049er and part 2

with infinite lives

 

I would be so happy

 

 

Here's Tutankham with infinite lives. I will look into the Miner games shortly and post them here if I can find a hack for them. Personally I could use some help with Dig Dug, because that one is really hard to hack. I have no idea how and where the lives counter is stored in this one - it sure isn't a simple decreasing counter like in most other games.

 

 

tutankham_.bin.

Link to comment
Share on other sites

Personally I could use some help with Dig Dug, because that one is really hard to hack. I have no idea how and where the lives counter is stored in this one - it sure isn't a simple decreasing counter like in most other games.

 

 

Hi Luc,

 

 

I've made an infinite lives hack of Dig Dug, both PAL and NTSC versions. You are right, it was hard to find. Dig Dug uses Atari's Superchip to give it 128 bytes of more ram. Unfortunately this extra ram can't be seen in Stella's debugger, and it was in the extra ram that the number of lives was stored. So disassembly was needed. To make things even harder I found the Superchip uses different addresses to read and write to its ram. I was really pulling my hair out until I RTFM, and leaned how the SC works, lol.

 

 

I left some notes in the disassembly about the Superchip, and while the disassembly doesn't have much it's a good place to start if someone wants to look into Dig Dug further. All the bankswitching is labeled, and the configuration files are at the top. I only disassembled the NTSC version, and used that to find the spot to change in the PAL rom. As a side note the bankswitching hotspots are left blank in this disassembly, and the ram was filled (all $FF). You can change that fill to whatever you want inside the macro.

 

 

If you are using HOM3 then the actual the changes to give infinite lives are at $32B8 for the NTSC version, and $32BA for the PAL version. DEX (decrease the X register) is switched for a NOP (no operation) instruction to keep the cycles and spacing the same. The amazing part is out of all those lines of code only one bit (not even a byte!) is changed to give infinite lives. One bit is the only difference between DEX ($CA) and NOP ($EA).

 

 

If you need help with Miner Vol 2 then LMK,

Jeff

 

Dig_Dug__updated_.zip

 

 

Edit: New attachment. I didn't enable the infinite lives switch when I reassembled the NTSC rom. :dunce:

Edited by Omegamatrix
Link to comment
Share on other sites

Would it ever be possible to make a Game Genie for a 2600? Thus, one could hack any game, provided you know the right flags & values?

The built-in cheat facilities in Stella are a 'Game Genie' of sorts. Once you find the correct address/value combination to change a game, a cheatcode can be created that Stella will use just like a Game Genie code. You wouldn't need to hack and release a new ROM; giving someone the cheatcode would be enough. And the built-in debugger will help greatly in figuring out the address/values you need.

 

EDIT: I just realized you might be talking about a real, physical cart that acts like a Game Genie. In that case, I have no advice :)

Edited by stephena
Link to comment
Share on other sites

I've made an infinite lives hack of Dig Dug, both PAL and NTSC versions. You are right, it was hard to find. Dig Dug uses Atari's Superchip to give it 128 bytes of more ram. Unfortunately this extra ram can't be seen in Stella's debugger, and it was in the extra ram that the number of lives was stored. So disassembly was needed. To make things even harder I found the Superchip uses different addresses to read and write to its ram. I was really pulling my hair out until I RTFM, and leaned how the SC works, lol.

The extra SC RAM can't be seen as part of the UI, but it can still be accessed from the debugger prompt. Typing 'dump $1080' will show the 128 bytes starting at $1080 (aka, the read port for SC RAM). And typing 'ram $10xx yy' will set address $xx to value $yy starting from address $1000 (aka, the write port for SC RAM).

 

I'll admit, it isn't as nice as seeing the zero-page RAM in the UI, with change tracking highlighting changes since the last frame, but it *can* be done. I plan to expand this in a future release, where all carts with extra RAM will have a UI to access it.

 

EDIT: I just wanted to add that I just finalized the code to show all SC extended RAM from the debugger UI. It will be present in the same area as the zero-page RAM, and can be searched/tracked in the same fashion. This will be included in the next release of Stella.

Edited by stephena
Link to comment
Share on other sites

  • 3 weeks later...
Hi Luc,

 

I've made an infinite lives hack of Dig Dug, both PAL and NTSC versions. You are right, it was hard to find. Dig Dug uses Atari's Superchip to give it 128 bytes of more ram. Unfortunately this extra ram can't be seen in Stella's debugger, and it was in the extra ram that the number of lives was stored. So disassembly was needed. To make things even harder I found the Superchip uses different addresses to read and write to its ram. I was really pulling my hair out until I RTFM, and leaned how the SC works, lol.

 

I left some notes in the disassembly about the Superchip, and while the disassembly doesn't have much it's a good place to start if someone wants to look into Dig Dug further. All the bankswitching is labeled, and the configuration files are at the top. I only disassembled the NTSC version, and used that to find the spot to change in the PAL rom. As a side note the bankswitching hotspots are left blank in this disassembly, and the ram was filled (all $FF). You can change that fill to whatever you want inside the macro.

 

If you are using HOM3 then the actual the changes to give infinite lives are at $32B8 for the NTSC version, and $32BA for the PAL version. DEX (decrease the X register) is switched for a NOP (no operation) instruction to keep the cycles and spacing the same. The amazing part is out of all those lines of code only one bit (not even a byte!) is changed to give infinite lives. One bit is the only difference between DEX ($CA) and NOP ($EA).

 

 

If you need help with Miner Vol 2 then LMK,

Jeff

 

 

 

 

Hi Omegamatrix,

 

Thank you very much for the Dig Dug hack, I had already given up on that one. The problem is that I don't know much about the Atari bankswitching - guess I should RTFM too. :) But then I'm not very ambitious anymore when it comes to programming and hacking, I've done my share of that back in the C64 days.

 

I will probably post some more hacks if and when I make them. If you can help with the Miner game(s), that would be great.

 

Thank you.

Link to comment
Share on other sites

Sure! But I'm going to do this one strictly through HOM3, cause disassembling a 3F rom is tough. I made a modded distella for myself to do it, but it takes a few days just to go through the individual slices and make sure everything is jumping to the right place, or loading from the right table. It's really time consuming.

 

I think Stella's debugger updates the rom when slices are switched in 3F, at least it had the right slices I needed when I was inside of it. It doesn't do that for some other uncommon schemes like E0 and I think E7. Not sure about E7. I'm hoping this will be fixed in the next update.

 

 

Since slices of the rom get swapped in and out; you're never sure what address is the right one. The best thing to do is look for a register decrementing when you die, and then set a trapwrite for it and die again. Then look at the actual Hex values for instructions and operands. Completely ignore the addresses. In HOM3 you can search for strings of Hex values with the "find" function, so by the time you enter 4 or 5 values it becomes easy to find the place you need. This is much better then searching for the individual register, and its fast.

 

 

Here is the NTSC version of Vol II with infinite lives. I did a couple of other things too. I stopped 3 copies of the man appearing in the demo, it just looke a little strange with them standing on top of the lava or whatever it is. I also smoothed the scanline bounce a little. This game is actually horrible for inconsistent scanline bounce and being a little too high or too low. I didn't completely fix it as I'm limited to what I can do without disassembly. I have left a pinned file inside for HOM3 of the changes I did.

 

Miner_Vol_II__infinite_lives__NTSC.zip

 

One thing about any 3F hack is Z26 won't recognize it. So if you want to play it in Z26 you have to enable 3F or Tigervision bankswitching. It's easy to do that with X26 as a front end. In Stella 3F is automatically detected so there is no problem there. You might want to use the tab button while the game is playing and go into "display". Once there click "use phospor" to yes. This will stop the flickering. It is set by default for Miner Vol II, but that setting relies on a known checksum, so it has to be reset by the user for the hack.

Link to comment
Share on other sites

Final 2, errr.... Miner 1, I mean. Same deal as before. You need to force Z26 into Tigervision bankswitching. There is an easy to find option in X26, or you could use the command line. Stella has no problems.

 

 

 

Miner_Vol_I__infinite_lives_.zip

 

 

 

 

Edit: Forgot to mention that it became obvious to me that Vol II was hacked out of Vol I. More astitute people then me probably noticed the music was the same, but it didn't click until I say the same routines in the code, lol. Made it easier to find what I needed after doing Vol II already. :)

Edited by Omegamatrix
Link to comment
Share on other sites

Looks like Z26 does riot RAM only... It's possible the gamegenie code allows access to ROM addresses. I'd have to look into it.

 

If it's something as simple as the cheat writing a value into ram (continously), then have it write 0x03 into the particular register used for the number of lives every frame.

 

 

In Miner Vol I that is at $00CF, and in Miner Vol II that is at $009F.

Edited by Omegamatrix
Link to comment
Share on other sites

I really have no clue how to play Solaris. I'm presuming number of ships = number of lives. The original source code for Solaris is available, and it reassembles to match the rom in Rom Hunter's collection 100%. I'm always amazed when it does that.

 

 

I looked at the hacks that have been done before in Impaler's collection of Hack's and Homebrews. It's easy to see where past changes where made with HOM3, and since they were only a couple of bytes difference in each I went to that place inside the original souce file. This can either be done by making a .lst file from it, or just alternating a byte and looking at the address in HOM3, until you find the exact place.

 

 

It looks like the intial value for the number of lives ($04) is at 16C7 in HOM3. There is also a place where it seems to cap the number of lives at 5 (or maybe 6 if it counts zero as a life), this is at 0142. You can try alternating these two places to see if that works. It might, however the lives display might be all screwed up. I saw there was a table that was loaded in there for it, and since there was a cap on the number of lives before this might have to be changed too.

 

 

The original source is available on Bjar's archives.

Link to comment
Share on other sites

I just wanted to say that I added search/compare functionality in the Stella debugger almost specifically for the reasons mentioned above; to make it easy to find a specific RAM location. It's outlined in the debugger manual, but I'll repeat it here briefly:

 

1) Search RAM, but don't specify any value. This will mark all locations for the compare in the next step.

 

2) Go back to the game and die/lose a ship/whatever.

 

3) Go back to the debugger, and Compare RAM. Use '-1' as the comparison value. This will search all previously selected locations for values that have decreased by 1.

 

4) If you narrow it down to one value, you've probably found the location. Try changing the value and see what happens.

 

5) If there are still several possibilities, go back and lose another life, then Compare again.

 

This works almost all the time. For some ROMs, you need to specify '-8' instead of '-1' (River Raid is an example of this).

Link to comment
Share on other sites

If your interested in doing it x-port emu's have the following functionality that should be easily implemented.

 

Check for values that decreased.

Check for values that increased.

Check for values that changed.

Check for values that did not change.

Check for specific value.

 

Using these I can usually find a location pretty quickly unless a 2600 game uses a RAM location for more than one thing (the bits of a byte).

Link to comment
Share on other sites

I really have no clue how to play Solaris. I'm presuming number of ships = number of lives. The original source code for Solaris is available, and it reassembles to match the rom in Rom Hunter's collection 100%. I'm always amazed when it does that.

 

 

I looked at the hacks that have been done before in Impaler's collection of Hack's and Homebrews. It's easy to see where past changes where made with HOM3, and since they were only a couple of bytes difference in each I went to that place inside the original souce file. This can either be done by making a .lst file from it, or just alternating a byte and looking at the address in HOM3, until you find the exact place.

 

 

It looks like the intial value for the number of lives ($04) is at 16C7 in HOM3. There is also a place where it seems to cap the number of lives at 5 (or maybe 6 if it counts zero as a life), this is at 0142. You can try alternating these two places to see if that works. It might, however the lives display might be all screwed up. I saw there was a table that was loaded in there for it, and since there was a cap on the number of lives before this might have to be changed too.

 

 

The original source is available on Bjar's archives.

 

Removing the ships cap or changing the cap is what I really want for the Solaris hack. Solaris is one of the hardest 2600 games I've ever played. I used to be pretty annoyed with Solaris because at one time I was so good that I can get to second half of the game with dying. However, I could've gotten at least six ships but the maximum amount of ships was always four. Those extra ships could've came handy for those later maps.

 

I did download the Solaris hack with unlimited lives and I think it did have messed graphics for the lives counter. I think I got that hack from this board some years ago, not too sure about that. I don't know where my copy of that hack is now. I've tried searching for that hack on the net and found this. I think this page might very helpful in hacking Solaris.

Link to comment
Share on other sites

Hi Luc. Can you possibly make a Moon Patrol hack with infinite lives? or is there one floating around you can point me to?

 

I'm trying to reach the phantom car stage but I really suck in this game.

 

Here you go:

 

moonpatrol_.bin

 

(lives counter is in $ec - dec instruction at $f14c)

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.

Guest
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.

Loading...
  • Recently Browsing   0 members

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