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.