And so it begins…

May 24th just passed – and so, it is now that coding begins.

In order to help me keep track of all the things I need to do, I have setup a local installation of Trac, where I add the individual subtasks and assign them to milestones.

This is a very useful tool on its own, but it would certainly be more useful if I could show my progress directly to the world as things progress. Because of this, I wrote a small tool which is set up to periodically extract my task list and upload it online. This way, everyone can keep up with exactly what’s happening.

The list is updated every 15 minutes, as long as my primary computer is switched on. You can see in the title bar when the list was last generated.

The task list is available at http://blog.birdiesoft.dk/tracreport/. I have also added a link in the sidebar.

Project outline

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.