Monday 4 January 2010

New blog for Decompiler Technologies

Hey folks,

As the first step of opening up my RightBack decompiler to public consumption, I created this blog, and this is the first post!

Over the next few months and years, I'll be posting up decompiled code from 8-bit games that never had any high-level source code, followed eventually by the source code for the decompiler itself.

You can use RightBack to completely decompile ancient 8-bit software, including games:

First, the 8-bit assembly code is decompiled by RightBack and output as source code.

The next step is to choose a variable (a memory address or argument to a subroutine), set breakpoints on that variable being read or written, and run the game, and see where the program stops at that breakpoint.

Once you know what a variable is for, you can name it, and re-decompile the code with that variable's name instead of its address.

Then you can find more variables with the previous names as clues - but not only that: you can name subroutines once you're sure what a block of code does.

As you work, you eventually end up with incredibly precise code, and then you can do things like:


  • Put the game's display on a bigger size screen
  • Make cheat modes
  • Port the whole game to higher-level 32-bit machines

RightBack is written in Common Lisp, which is the most flexible platform for this kind of program. It was developed from November 2002 up to mid-2005, originally written in C++ until a 2005 rewrite in Common Lisp. I've been getting it up and running again. It used to decompile VB6 code, but VB6 has been abandoned, because it's too complex. But luckily, RightBack is a perfectly good decompiler for x86 code, as VB6 native code is x86 code - just with a huge API of calls like "vbaFileOpen".

Languages you can decompile include:


  • VB6 native
  • x86 native
  • 6502/6510 (C64)
  • Java byte code

I'd better shut up now, so look forward to future announcements.