Sunday, January 29, 2012

OutRun C++ Engine Tech Demo

Finally, after years of hard labour, here's a technical demo of the OutRun C++ port. The demo showcases recent work porting the core level rendering engine. The benefit of rewriting the engine, is that it will facilitate modifications and enhancements to the original game that Yu Suzuki only dreamed of.

Now, let's get arty and check out some stills from the demo. I've implemented the ability to change the horizon y coordinate, so we can experience viewpoints never seen in the original game. How about a bird's eye view of the start line?

We can also straddle left and right, so it's possible to find further interesting camera angles. Although this one reveals that our surf-boarding friend isn't actually in the water! Messing with the original engine can highlight its limitations of course. This demo allows you to scroll further left and right than the original engine, which can cause glitches. 

It's fun to be able to browse the scenery in detail: 

Here's a beach-side postcard scene for you:

And finally a view down the final straight of Coconut Beach before the road fork. Alas, the road fork code hasn't been ported yet, so this is the road to nowhere at the moment. 

The keys for the demo are:
  • Space: Toggle automatic movement through level
  • Cursor Up: Advance slowly
  • Cursor Left/Right: Move camera left/right
  • A/Z: Adjust horizon
  • Escape: Quit
Other Notes:
  • Having control over the rendering engine surfaces glitches and limitations present in the original code. Using unpatched roms, the sprite zoom bug mentioned in this post is evident. You can use patched roms to eliminate this. 
  • There is a bug where a random shadow pops into view dependent on the camera x coordinate. This is present in MAME as well, but is hard to reproduce when you're actually racing through the level. I need to get this verified on hardware to help track down a solution and determine whether it's a video emulation issue or a bug in the original codebase. 
Download here:

Let me know what you think by leaving a comment below.


Anonymous said...

This looks very exciting. I'm unable to test the demo unfortunately - Having installed the applicable 'Microsoft Visual C++ 2010 Redistributable Package' for my computer - I'm being met with a persistent 'the procedure entry point_invalid_parameter_noinfo_noreturn could not be located in the dynamic link library MSVCR100.dll' - any thoughts would be appreciated. Cheers.

yt said...

Not sure I'm afraid. I just tested on a Windows 7 PC, Vista PC (after installing the runtime libraries) and XP. Worked fine on all of them.

Would suggest googling the error message, and maybe cleaning out your PC.

Anonymous said...

Resolved the issue by re-installing MS C++ SP1. Silky smooth demo, the horizontal feature is really nice. Now I'm eagerly awaiting more update releases ;-)

yt said...

Glad to hear you got it working.

I'm working on getting all 15 levels rendering perfectly at the moment.

I've written some code to quickly load any level on demand.

There are a few additional sprite routines and a couple of road routines that need porting before this can be considered complete though.

The next demo will most likely be all 15 levels, code to split the roads, and transition to the next level.

francois said...

thanks for your work. you make one of my dreams come true : to be in outrun.
but i have installed the microsoft package , and it dont works :the screen is black and the game ends when i hit a key... so i try with codeblocks and i have some colored lines in the black screen but it end when i hit space.
i have windows 7 and a little video card.... please help ;)

yt said...

Sounds like you haven't used the correct roms, or haven't named them correctly.