Monday, August 13, 2007

the current state of things

A long time has passed since I have posted to this blog, which is rather sad. I have had lots to do and in between exams, illness and SoC hacking there was not much time left to dedicate to keeping the blog up to date, even my training suffered.
Anyway, Dirty D is "prototype done", which means support for SCUMMv5 and code structuring. Its final code formatting is buggy however, so even though the structuring is correct, this is hard to observe unless going into the source and inserting statements to print the various graphs and related meta information which are generated during code structuring. Very much in character of its name and because of lack of time I left it like that to move on to the implementation of the final decompiler in python. (This also meant skipping implementation of a second prototype devoted to the stack based bytecode variants and the question of how to generalize the disassembler portion of the decompiler, but I will come back to that.)
As for "finalD" (it does not have a name yet), it disassembles SCUMM <= 5 currently. The structuring code is next on my agenda to be translated to python, followed by the output. There are a few more days in SoC and I am positive that these things will be finished .. soon :)
There's some beef though and it is related to the stackbased SCUMM variants >= 6. I hope to be able to wrap up the structuring and outputting code fast enough to have time left to devote to these, but the outlook is grim at least for the SoC deadline. Correctly handling these stack based bytecode variants might just require some limited form of data flow analysis, which I have tried to avoid in general. Apart from this, the sheer amount of tedious work involved in writing handlers for opcodes has me cringing in terror by now, at least when deadlines are involved and the optimum outcome until the end of SoC I can envision involves me not sleeping for five days straight.