While working on my "Sprite Thief" program, I found "DROL" in the higher levels to be too difficult for my reflexes.
Just if you are not familiar with the game, it's a platform game in which a small blue robot controlled by the player needs to catch a girl running after a balloon, a boy running after a toy helicopter, and finally, their mom, which is bound on the lowest level of the dungeon. There also is a jet pack lizard and a jet pack crocodile to catch to finish the first and second stages. Various enemies, most are jumping, need to be dodged or shot down. Some enemies are indestructible and must be avoided. In higher levels the enemies start to spit or shoot at the robot.
The game has four stages per level which are freshly reloaded from the floppy disk each time. This is a complication for a hacker who seeks to give invulnerability to the robot. Still, it is possible by invoking the debugger present in AppleWin using the F7 key (alas, the version of LinApple I have has no debugger).
To get invulnerability, wait after a new stage is loaded and wait after the robot appears the first time. Do not apply the patch (see below) before the robot appears, because the same subroutine which is disabled by the patch both spawns the robot and later checks if it got hit. This information is conveyed by zero page location $1E. But we don't manipulate that. Too tedious.
Instead, we take out the hit detection subroutine by replacing the opcode for JSR ($20) with the opcode for BIT abs ($2C). This is a very economical patch. The game uses the same technique to enable and disable subroutines in its main loop ($67CB). Self-modifying code depending on the game state. Aaarg ! Did not see this foul trick in any other piece of 6502 software in all the 40 years.
THE INVULNERABILITY PATCH
After a new stage has been loaded and the robot has appeared, press F7 to invoke the debugger. Not needed for stage #4 with the movie where mom and kids are reunited and the player is praised for his/her skills - no robot there.
Enter the command:
then press F7 again to continue the game. Rinse and repeat this procedure after a new stage has been loaded.
EFFECT OF THE PATCH
The robot becomes invulnerable. No enemy can harm it. Instead, all the enemies which normally can be destroyed by shooting them get destroyed when they touch the robot. You still can shoot them. In both cases, you get points.
WHY IS THIS PATCH SO SIMPLE ?
I can only make a conjecture here: this behaviour was intentionally programmed into the game, to give the developer a sort of "God" mode, which is a common method to test a game in development. In some games (like Quake) this mode is still present in the release version. But so far I did not find some trigger / secret key combination in DROL to invoke the "God" mode - which would just need to replace that single byte. I did not search too intensively, though. Maybe there is no such combination. I don't have time to look any further.
YET ANOTHER HACK
You can also use the debugger to change zero page location $5E which is the number of lives in BCD. This is how I started hacking the game. Until I had developed the invulnerability patch this was the only way for me to get to level 3 with - almost - honest game play. Except for the 30+ lives my "robot" needed to get there.
While DROL is one of my favourite Apple II games, full of funny, well animated cartoon like characters, only level 1 is playable for me. Without any hacks / foul tricks I could never complete level 2. I think the jump in difficulty from level 1 to level 2 is far too wild. This may have frustrated many players since the game was released in 1983.
Comments invited !
(Footnote: the DROL.DSK file you can find on the web is a cracked version of the game where the copy protection has been removed back in the early 1983s. Like all too many cracked games, it does not work properly and hangs, at least on LinApple - the "reunion" level 4 never happens. The DROL.WOZ file found on the web works, as it faithfully reproduces the original code, but the version of LinApple I have running under Linux does not support WOZ files. And AppleWin does not have my screentrace patch. Ouch ! This is how a harmless looking "little" projects turns into a man-month sucking coding endavour. But at least I have all the means now to study the mechanics of the game. And to "steal" its funny sprites ;-)