This was my go-to game growing up with my Apple ][+ computer. Every once in a while I fire up the Applewin emulator and run this for hours on end…
Then I would get frustrated (especially during the bomber stages) and put it down again, and try to find a cheat. From what I can tell, for all my searching, a cheat for this game simply does not exist, and has probably never existed, like they do for just about all other vintage apple // games…
In my searching for a cheat, I came across this thread and your memory mapping at github.
So I dusted off what I knew about 6502 assembly (which, admittedly, never amounted to much), learned how to use the Applewin debugger, and using your memory map as a primer, I set off to create a cheat on my own.
Yes I know cheating is bad (shame on me!) but I used this as an opportunity to finally learn 6502 machine level programming (better late than never). So really I see this as a learning experience, which is a good thing in the grand scheme of things.
So in my quest to develop a cheat for Sabotage, I raised my general understanding of 6502 assembly by a very large amount, and specifically for sabotage found some more important memory locations for the game…
If you are interested (and I really hope you still are), I would like to submit these changes to you for your validation, and perhaps add some of these mappings to your memory map there. I will post it formally as a comment to the github repository. In the meantime, I will post the cheat code here, so for folks that come across this thread they could load it up and run sabotage in a “cheat mode” if they want.
About the cheat:
So I am modifying these 3 memory locations:
Code:
$5930 : 04 <- # of men on right side (game over) <- Modify this value (to > 4) for cheat
$593F : 04 <- # of men on left side (game over) <- Modify this value (to > 4) for cheat
$6A78 : FF <- Modify this value (to 0) for cheat (bomb proof, recommended mod for bomb proof cheat)
So what I think is great about this cheat is that it is scalable, in that you can change the number of paratroopers on the floor before game-over to any amount. Normally the game is over when 4 men collect on either side of the turret, but you can change that to 5, 6, or any number of men, or you could just set it to 255 ($FF) for basically unlimited men on either side (the game will never drop >3 paratroopers in the same column). You could even make the game more difficult and set it to even fewer than 4 if you like, although the ending animation does some funky weird stuff if you choose fewer than 4.
After I figured that out, I discovered a lot more about how the bomber stages work, and I found several places to modify to make a “bomb proof” cheat, but I think the $6A78: 00 mod is likely to be the most stable of these. I will detail more of these locations in the memory map additions.
I implement this cheat in some applesoft basic code (since this post is getting a bit long and rambly, I will post it separately). This assumes you have a disk image with regular DOS 3.3 and the common (57 sector) Sabotage binary file to run. It will (B)LOAD up the sabotage binary, make some poke modifications, and start execution at $1D00.
One quirk of this cheat implementation, is that this particular sabotage binary loads up at $1D00, but then it takes the bulk of its payload starting at $2000, and move it all up to the $4000 range. It does some other stuff (I’m not quite sure what its doing in there), but after the memory move it starts execution at $42BC, where it does yet some more stuff and continues execution at $4000. Perhaps this has to do with the packaging of the hack/crack of the game, or perhaps this is part of the original software. In any case the result is that I need to poke in the memory locations at [location] - $2000 rather than at the proper/final location in the memory map. So, as an example, rather than poking at location $6A78 for the bomb proof cheat, I actually poke at location $4A78 instead, prior to the call to $1D00, and that will map to its final location at $6A78 after the move.
One other thing: The cheat does not make you completely invulnerable. If a man lands directly on the turret, or 3 men land on the columns to the immediate left/right of the turret, you will still die. If I (or someone) can figure out how to prevent that, then in theory the game could just run on and on forever, without user input. It would probably end up filling all the columns of men up to the maximum of 3, and just keep sending out helicopters and/or bombers forever and ever...
Anyhow, I will post the applesoft basic cheat in a separate post..
I hope all this makes sense, and for those that come across this thread, please enjoy my cheat code
… Howard