Monday, January 7, 2019

Miner 2049er II for apple 2


I got inspired to play miner 2 after watching some playthrough videos on youtube. I think I understand why I never was able to finish miner 2049er back in the day, it was just too tedious and unforgiving. It's a heck of a lot easier with savestates. I consider finishing one level an achivement.

Once you complete the 10 screens, it becomes near impossible with the stupid bouncy ball showing up unexpectedly.



Here's some cheats in the mame debugger:


set your score (you only see 7 digits)

d@080c=87654321

set the amount of time remaining, here it will be 99 minutes 60 seconds

w@0808=9960

If you set it too high, when you finish the level it can take a long time to count down, so just do

w@0808=0100

number of blocks remaining to cover, set it to zero to finish the level

b@080a=00

number of lives, don't set above 21 (0x15) or the hats will cover up the screen

b@081c=15




./mame64 apple2e -flop1 "~/Downloads/Miner 2049er II (4am crack).zip/Miner 2049er II (4am crack)/Miner 2049er II (4am crack).dsk" -window -confirm_quit -debug


There's a couple of interesting things I discovered while using the mame debugger.

I tried to disable a watchpoint numbered 0xA with wpdisable A but it didn't work.

What was happening is that it was interpreting A to mean the current value of the accumulator.

To workaround this, just do wpdisable 0xA.


If you want to flip to the hi res page 2 manually, do

b!c055=1

And to flip back to hi res page 1, do

b!c054=1

and here's a lua function to calculate the beginning address of each line of the hi-res screen: It's useful when you want to set a watchpoint at a specific point on screen.

function calc(line) return line % 8 * 1024 + math.floor(line / 64) * 40 + math.floor((line%64) / 8) * 128 +8192 end

for i = 0,191 do print(i,string.format("%x",calc(i))) end

and here's an example of writing directly to the apple's memory from lua:

cpu = manager:machine().devices[":maincpu"];mem = cpu.spaces["program"]
for i = 0,191 do mem:write_u8(calc(i),i) end

No comments:

Post a Comment