Back in 2003 I started a project to disassemble and document the ROMs to Ms. Pac-Man. Since Ms. Pac-Man is a ROM overlay over the original Pac-Man ROM's, I started there. The methodology for the project has been to carefully walk through the disassembled code manually and document it, often with printouts and pencil. I'm avoiding using an emulator or anything other than simple disassembly tools that I write. I've work on it on the occasional weekend, lunch break...... really whenever I need to zen out into a piece of code. It's oddly relaxing to slowly scan through a piece of software and absorb its function from the bits-and-bytes level. It's probably my longest-standing project, and at this rate will be for some time to come. :)
By now I probably have one of the more complete documentations of the Pac-Man ROMs around. There's still TONS to do on this project, but I continue to chip away, little by little. You can check out my progress graphically here.
I can't make my current source publicly available any more because of fear of Namco's lawyers (boo!), but I'd be delighted to share it person-to-person with other people who are interested in historic video games, just drop me a line.
Current focus (Feb. 2011):
-- I built a really rudimentary Z80 disassembler in Perl for the initial dump, but it had some bugs and was a really nasty piece of code to boot. I've started a new Z80 disassembler design that should be substantially cleaner.
-- I have some preliminary designs for a graphical layout of the documentation for possible publication, but there's still much to do. I just got Omnigraffle, so that should allow me to experiment with designs a little easier.
-- I'd like to move the code into a SQLite database at some point but I'm not ready, tools-wise, to jump from editing this document in an ASCII text file to editing this document in a database. The big advantage of moving to a database is that it makes scripting the creation of nice publishable layouts substantially easier. I do have a schema sketched out, but this needs some work.
-- Once I have some more clarity on a process for moving to SQLite and also for automatically generating graphical layouts of the documentation, I'll be building a nice Makefile for myself that I can kick off whenever I'm done cleaning up a big functional piece of code.