Friday, June 8, 2007

Report #1 -- Noodles and Double D

Week #1


I have spent most of my first week rereading descumm's source code and prodding my mentor to write up a little document describing SCUMM v5 bytecode format. He delivered it on sunday and it proved to be quite useful for getting a better grasp on descumm's inner workings by just having it side by side with a hex view of one of the Monkey Island 1 game scripts Andreas Muegge was kind enough to send me and descumm's decompilation of said script.

I also started thinking about recognizing control structures within bytecode (from conditional gotos/jumps ..), but as there is more drudgery to do until this becomes relevant I have not yet written up a concise representation of my ideas.

Week #2


I have actually started programming a decompiler for version 5 of SCUMM in Scheme on Tuesday. According to my original project schedule, this wasn't planned to happen for another two weaks while I sketch out an initial design. For this first prototype however, I will heavily lean on descumm's opcode handling code to be able to work on certain improvements earlier.

The prototype is named antipasto and the series of versions I plan to implement will henceforth be referred to as the family of antipasti. The first of these bears the code name "Dirty D" and will essentially be a decompiler for SCUMM v5 with improved control structure recognition in place.

No comments: