don't click here

Find Compiler Program Used for Sonic 1 Has Been Dumped

Discussion in 'Engineering & Reverse Engineering' started by Alex Field, Nov 1, 2022.

  1. Four years ago now (damn, has it really been that long?), Yuji Naka shared footage of Sega Research & Development from February 1990; included among the footage was an extremely early version of Sonic 1 running on a DOS computer, and fans were able to decipher the code. However, one other discovery made from the footage was that the game had been compiled in 2500AD's compiler X68K, which had been used in several other games.

    Given how old this compiler was, and the general secrecy surrounding the company who made it, it was unlikely that it would have resurfaced. Until today, as after looking at Clownacy's blog post on Sonic source code, I did some digging and...

    https://archive.org/details/2500ad-x68k

    The compiler, having been uploaded July, and sitting basically undiscovered (barring 14 random viewers); although using it nowadays would be highly impractical (given you'd basically be forced to run it in DOSBox to use it), it is amazing to now have the same tools the developers had back in 1990, as it gives you an idea of how limited the tools were.

    Of note, it seems like Sonic 2 REV02 and Sonic 3 switched back to this compiler, as they share the same oddities as Sonic 1; this includes optimized add/subtract instructions, absolute long "leas", and no "JumpTo" blocks. I wouldn't be surprised that Sonic 2 being developed on a Macintosh-like environment was a decision made by the American staff, and Naka switched back because... he thought it was convenient? Whatever the case, enjoy.
     
    • Like Like x 8
    • Informative Informative x 5
    • List
  2. OrionNavattan

    OrionNavattan

    Tech Member
    165
    164
    43
    Oregon
    Interestingly, look like it was our own member Devon that provided it to the uploader. Regardless, a good historical find.

    I’ve actually thought about looking into 68k Macintosh assemblers, given the likelyhood that Sonic 2 Revisions 0 and 1 were assembled on one (could have also been an Amiga, but regardless final assembly was done on a big-endian platform).
     
  3. Devon

    Devon

    I'm a loser, baby, so why don't you kill me? Tech Member
    1,245
    1,415
    93
    your mom
    Actually, I got it off another guy who posted it in a public Discord server I used to be in, so credit should go to ctr001.

    The one uploaded to archive.org is actually a Win32 version, so it will run on modern Windows.
     
    Last edited: Nov 1, 2022
    • Informative Informative x 1
    • List
  4. Oh, really? Well, i that's the case, now I'm anticipating someone trying to make the current disassembly with it.
     
  5. Brainulator

    Brainulator

    Regular garden-variety member Member
    According to this post by evilhamwizard, either Devpac (2?) for Atari ST systems or ProASM for Amiga systems was used to assemble Sonic 2, with Devon stating that ProASM matches Sonic 2 quite well.

    What an awesome find!
     
  6. Devon

    Devon

    I'm a loser, baby, so why don't you kill me? Tech Member
    1,245
    1,415
    93
    your mom
    To be honest, having thought about it more, it's probably more the linker that should be considered when it comes to the JmpTo's. I don't rememeber which one I tested, though. I'd need to retest it.
     
  7. Brainulator

    Brainulator

    Regular garden-variety member Member
    I assume ProASM would be responsible for the symbol data, directives, and macro declaration style?
     
  8. Devon

    Devon

    I'm a loser, baby, so why don't you kill me? Tech Member
    1,245
    1,415
    93
    your mom
    Yes.