Sunday, July 17, 2016

Out Run: The Arcade Software Development Kit

OutRun turns 30 this year, and what better way to celebrate its legacy than with the release of Alex Bartholomeus' OutRun Software Development Kit (SDK).

The SDK allows you to compile C and C++ code to target the original OutRun hardware. The package includes:

  • A fully working GCC C cross compiler
  • A mostly working GCC C++ cross compiler (with a large memory footprint)
  • Shared library code including input handling, palette setup, tilemap rendering, sprites, text display and even menu functionality.
  • Example programs
  • An optional bootloader. If you don't want to program EPROMs each time, you can build a nifty interface to send your code directly to the original hardware. 

Here are some example programs that Alex has coded to demonstrate what you can easily achieve. The source code to these programs is included in the package.

There are plenty of cool uses for this SDK. On a basic level it could be used for the creation of test programs to debug and fix original boardsets. Alternatively, you could even use it to create an entirely new game! Whilst you'd lose some performance and memory by coding in C or C++ as opposed to pure 68k assembler, you'd gain the ability to swiftly create and debug code and port existing software.

Download the SDK from Alex's page here


Shawn LeBlanc said...

That is absolutely amazing. I've been wanting something like this for years!

Anthony McGrath said...

Holy cow I can't believe I've just found this!!! Congrats on working through this and I thought I was a huge original outrun nut! :)

I have a couple of questions.. hope you can answer!!

I'm looking at doing a slight variation.. nothing major I just want to change the car if possible. Is this easy enough with this sdk?

Is it possible to compile it for mame on Android?

I'm not a coder ìm a 3d animator and generalist so I'd love to be able to do this and update it for a few car clubs :D I have no idea where I would be able to compile all this?

Francesco Consonni said...

Greetings, I'd like to ask you some questions about the Cannonboard and Outrun PCB restoring, is there a way to contact you privately?

sega19 said...

Will this work with Turbo Outrun boards?

yt said...

Yes it would work on Turbo OutRun (with a 68000 inserted, not the FD processor).

But the graphics roms would all be different, therefore some of the demos wouldn't run out of the box. You'd need to use the OutRun EPROMs to run those demos.

yt said...

Changing the car - you would need to edit the sprite roms. Realistically would need to code a sprite editing tool to edit the sprite files.

You wouldn't really need to use this SDK for such a change, as you wouldn't be writing new code, just changing an existing graphic.

iCE said...

Hi yt,

I don't know where else (and who else) to ask this question, but do you think this is another Philko boot?

says BETA 1987 on some pics and the PCB somehow looks strange imo.
Would be cool if you could take a look at this, maybe you know more about this.
The ROMs aren't dumped afaik.

iCE said...

Ah nvm, after further inspection on this pic:$_57.JPG

you can see a "Philko" IC underneath the DIP switches.

fdn777 said...

I cannot express enough the shock i experienced when i found out your blog which describes what you did with one of my favorite games. I have studied computer science, and i can feel how intensely difficult this project was. Understanding thousands of assembly lines, and ALSO porting the logic to C/C++ - plus enhancements - is a major challenge even for the most advanced programmer. Well done!
Regarding this, I have a question for you which i believe that you can help with your answer as i would like to experiment myself with a mame game in my free time. Could it be possible to use snowman for ida which produces directly C code instead of starting the work from assembly level? If this is achievable do you believe that starting with the generated C code would accelerate the porting ?

yt said...

Thanks for the kind words.

I've no personal experience with Snowman. Personally, I think it could make understanding the original code more complex, as it adds an additional layer of obfuscation. Working from the original assembler means that you're pretty much viewing the code as written by the developers. I would be concerned automated tooling may introduce further bugs.

Once you have the code documented, converting it to C is relatively easy and facilitates your understanding of the codebase.

Flip Jork said...

The CMSIS library project now includes build for RTX kernel in the build configurations. Precompiled libs are available in github. The default initialization of RTX version was modified to use RC oscillator so it can start on any nRF5x without the 32KHz Crystal. The default RTX build from Nordic requires the 32KHz crystal to run.