I figure it's about time that I post a bit more about what I'll be doing.
As I mentioned in my first post, my task is to create a generic script decompiler. That's a bit vague, though - it can't magically know how to decompile everything
, and there's no way I have time enough to teach it everything.
Instead, I'll make it work with two different engines: SCUMMv6 and KYRA. For SCUMMv6, I own Sam & Max, and for KYRA, I have a demo of Hand of Fate, so both of these will come in handy when testing the decompiler.
Why those two engines? Well, apart from being pretty well understood, my mentors are also familiar with these engines. Although I could choose engines that neither of them know anything about, that would be a pretty foolish idea, since it'd be harder for me to get help if (well, most likely when
) I need it.
The reason for taking two engines is simple: if I only did one engine, it'd be hard to show that I actually took a generic approach. It's the same problem if I just did two different version of an engine - it might need to be a bit more generic in order to allow for both versions, but it doesn't say anything about whether the approach will easily extend to other engines.
So now that we know what the end goal is, let's talk about how we're going to get there. I've prepared a schedule, and here are the primary points on it:
- June 1: Disassembly framework
- June 8: First disassembler (SCUMMv6)
- June 21: Generation of code flow graph
- June 28: Code flow analysis
- July 24: Code generation (SCUMMv6)
- July 29: Second disassembler (KYRA)
- August 6: Code generation (KYRA)
Of course, these dates are just estimates, and there are other subtasks on the schedule - I've just omitted them to create this overview.
So there you have it - a brief overview of my project. In later posts, I'm going to cover these steps in more detail.