I've been having fun looking through the notes put together by "mrsid", a programmer who took up the challenge of re-implementing the classic Apple II game "Prince of Persia", by reverse-engineering a running copy of the game, while simultaneously reading Jordan Mechner's original diary and design notes:
In the meantime I found Jordan Mechner's blog. He had the courage and insight to post all of his old journals from the 1980s. He meticulously kept a log of his daily work. What a great read that was. Just a few days before I started looking for Prince of Persia information Jordan also posted this article on his blog. It contained a link to a PDF, which turned out to be the Prince of Persia source code documentation.
I was amazed. The source was lost on Apple II disks, but the document written just a few days after the release in 1989 was there, with all kinds of juicy little details about the graphics engine, the data structures, lists of images, and more. It was like someone had handed me the key to a long lost treasure.
Mrsid presents the notes as follows:
- Prince of Persia for Commodore 64/128 released
- Part One - Why the hell would anyone want to do that?
- Part Two - In the beginning there was a binary data blob
- Part Three - Making the Kid come to life
- Part Four - To bitmap, or not to bitmap, that is the question!
- Part Five - Painting a pretty dungeon
- Part Six - Playing hide and seek with pixels
- Part Seven - Hitting the memory and motivation barrier
- Part Eight - Everything comes to him who waits
Hopefully there will be more essays posted in the future, as the complete notes are not yet available.
In the meantime, though, it's great fun to read Jordan's original notes, as well as mrsid's reverse engineering analysis, and it's also quite cool to see the discussion back-and-forth between the two of them in the comments on the blog.
I still vividly remember my eldest daughter playing Prince of Persia in the early 1990's on our fresh new Mac IIsi -- my how she loved that game, and how we loved that computer!