Jump to content
Sign in to follow this  
smf_4ever

looking for a disk image...spleunker..unlimited lives..

Recommended Posts

Back in the day.. I had a copy of spelunker that had unlimited lives.. does anyone have a copy of this disk image? or is there a simple way an idiot can modify a current .atr file for this??

 

just reliving some past memories on this one :)

Share this post


Link to post
Share on other sites

Yeah...search for this area:

 

20 39 12 : JSR $1239

a2 00    : LDX #$00

86 c7    : STX  $c7

a5 cb    : LDA  $cb

10 18    : BPL  $122e

a9 ff    : LDA #$ff

8d e2 11 : STA  $11e2

 

See that middle line? Change the a5 cb to a9 01

This will insure that the "lives" is always read as a positive value.

 

Note: the addresses might differ depending on the version you have, but the routine should follow that format. I found this one at $1212 (the address of the bytes to be changed).

 

Quick note on hacking lives: This is one of the easiest hacks to locate. When playing any game on an emulator, break out and enter the monitor mode (F8 on Atari800Win). Then look at zero page by pressing M and enter. The number of player lives is usually located someplace in there...it should match either the number of lives you have, or the number of lives in reserve (I noticed that address $CB held a value of $04 right at the beginning). Continue the game, lose a life, and check again...the value should have moved down. If not, check some other byte. If so, do a search for instructions that look or modify that byte...and then just alter it so that it always meets the condition for positive lives. In this case, $CB moved down to $03 as predicted...so I just looked for the string a5 cb (LDA $CB)...but other possibilities could have been using LDX or LDY, or just DEC for that matter. Hit it right off the bat.

 

Here's the original unhacked version that I looked at:

Load the game, hit F8 then type c 1212 a9 01 and type cont

spelunker_broderbund_.zip

Share this post


Link to post
Share on other sites

Oops...I just realised that my description might imply that the byte holding the # of lives is ALWAYS in zero page. It's not. Programs can put variables anywhere in Ram memory. Though zero page is a good place to check first.

Another possibility is to look for instructions that modify a known screen location (you can discover what address the screen begins at in bytes $58/$59...or by looking at the display list by typing DLIST)...and then tracking down the instruction that changes that specific byte.

 

BTW using the above hack will still show the lives disappearing from reserve...but it works (since it never LOADS a negative value).

Share this post


Link to post
Share on other sites

or try to search the "init segemt" where the live counter is initilised.

 

in a game with 3 or 5 lives there must be a

 

lda #5

sta adress

 

or lda #3

sta adress

 

or lda #life_value-1

sta adress

 

somewhere... after found search for a "dec" of this variable...

 

now you can try to replace the instructions with NOPs... e.g. EA opcode

 

f.e. DEC $a5

 

would be replaced with EA EA.

 

or you can try to change the init of the counter with lda #255 for 255 lives....

 

there is no real strategy but it mostly done the same way...

Share this post


Link to post
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.

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...
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...