Hello everyone!
I'm Frank from Germany. I have been lurking for a couple of weeks but now I can't resist saying hello to this community. Fantastic resource, many thanks!
In school I developed software for the Apple II, mainly in Turbo Pascal. I never made the leap to code directly for the 6502 because I felt I didn't have it in me. At the same time I had great respect for the wizards who were able to dive into games and pry the secrets from them. For example, one of the pupils I met regularly in the computer room changed the sprites from Bandits (a Invaders-like shooter) into the face of one of our teachers - - I still get goosebumps when I think about it
For many years I had been thinking that _someday_ I should try to do exactly that: take a Apple II game I loved to play and look under the hood and understand it thoroughly. And that's exactly what I'm doing right now: burrowing into Robotron 2084 (one of my Apple II favorites), at the same time learning 6502, the specifics of Apple II hardware, as well as 8bit game design - - I don't understand any of this yet. The goal is to reverse engineer the game into an annoted disassembly file.
Robotron is a well-researched game, with 6502 source code available for the original Williams Arcade platform, as well as for the Atari7800. At a later point in the project I can use those sources to get a better understanding about data layout and game mechanics. I hope that especially the Atari version will be helpful as the splash screen of the Robotron on the Apple II shows Atari as the game developer. Still, I suspect that the value of having those sources will probably come only later in the project.
I am well aware that it is a hugely ambitious project. It is probably impossible for me to arrive at a complete understanding of the game, so I aim for having a good idea about execution flow, level design and sprite info. For this I use a Python-based Apple II emulator which links into an Excel workbench, with full state save/load, breakpoints, watches, disassembler etc. The first versions of my emulator have been focused on understanding the 6502, particularly getting a grip on JSR/RTS and charting execution flow. The next step will be implementing hooks for LD. and ST. to collect read/write info for the 64k memory locations. This should give me a first idea about which subroutines write to e.g. the hires display.
It's only a couple of days into the project so I have not yet progressed with my analysis past the intro screen. For a newbie the 6502 is not particulary easy to read, but it feels like I could grow really fond of the 6502. I am looking forward to the challenges.
I also have some first ideas about static code analysis. This would be an area which is not Apple II specific - - any advice for reverse engineering disassembled 6502 is very welcome, also any pointers to which part of this forum I should address my questions to.
Again, thank you so much to all who have been working on this website and all those who have added content. Awesome!