Monday, December 31, 2012

Japanese Track Support

The original Japanese release of OutRun had different track layouts to the final Western release. Overall, the game is tougher with sharper unforgiving hills, and more aggressive turns. 

This selection of tracks is less polished; Coconut Beach is nowhere near as rich in terms of design and the overall difficulty curve doesn't feel as good. 

However, it's great to see the evolution of the track design between versions. And Gateway has some cool twists and turns that were removed due to it becoming an easier stage in the Western version. 

The next Cannonball release will optionally allow you to play both versions of the game. It needs a little more testing (i.e. playing) before it's safe to release. 

Devil's Cannon is known as Walls in the Japan version. The layout and sky colour are different.

Japanese Course Map

Japanese Coconut Beach. Not as cool as the final version.

Sunday, December 30, 2012

Cannonball 0.13 - Custom Music, Menu System & More

Cannonball 0.13 is out!
There are a lot of changes, so it's possible there are also bugs. Please report anything you find.

Music Customization

Configure Cannonball to play WAVs instead of using the inbuilt game music. Configure the name of the replacement tracks for full ingame integration!

Please note, I do not intend to support additional file formats like MP3. This is a decision to avoid bloating the codebase with third party libraries. Convert your files with a free audio editor like Audacity.

Menu System

Now you can configure Cannonball without editing the config.xml manually. Note that some options are only available in the config.xml though. 

High Score Saving

Scores are saved to a human editable hiscores.xml file. Edit the high score table manually!

Control Enhancements & Gamepad Support

Digital gamepads are supported. You can even change the digital sensitivity, so you can recreate the twitchy Sega Saturn conversion experience if you desire. Be sure to connect your gamepad before starting Cannonball.

All keys and joypad buttons are fully configurable.

I will support analogue whenever I buy a controller for testing. Or if you're in a hurry you can donate me one. :)

More Options & Bug Fixes

There's an app icon, ability to toggle extra level objects, fixes to the mingw compile and more. 
Check out the commit history for more detail. 

I will update the online manual tomorrow. 

Monday, December 24, 2012

Space Harrier Wiwi Jumbo Music Data In OutRun?

Whilst creating Cannonball, I uncovered a large section of unused YM2151 music data in the Z80 program code. Initially, I was excited - could this be an unreleased Hiroshi Kawaguchi classic? 

Unfortunately, after hacking the code to play the data it sounded like garbage. I wasn't sure if this was a problem with MAME's emulation, so I asked Alex of the OutRun bootloader project to play the sound on hardware. He sent me the results, which you can download here as an MP3

It still sounded wrong, so at this stage I stopped investigating. It wasn't until later that night when I randomly happened to be playing the Space Harrier soundtrack on vinyl, that I came across the following composition:

I wonder if this is the Space Harrier Wiki Jumbo track embedded, but playing incorrectly due to other modifications to the sound code? It's a shame, because otherwise we could have hacked OutRun to have an additional tune. Perhaps it's still possible with some additional work...

This maybe isn't a big surprise, we've already uncovered other segments of Space Harrier in the OutRun code.  

Cannonball news - I'm implementing a nice front-end menu, with lots of cool configuration options. Expect a new version after Christmas. 

Monday, December 17, 2012

Cannonball: Widescreen Support

The play area can now be extended to widescreen. The internal resolution is set to 398x224, which is approximately a 16:9 aspect ratio. This means the screen is 25% wider and you get to experience more of the game world. The widescreen mode can be played windowed or full-screen as normal.

There are some things to note about this mode:
  • The music selection screen and course map screen still display at 4:3, due to art limitations.
  • The tilemap x-scroll position is different, to compensate for tilemap wrapping. So the backdrop position will be slightly different to the normal mode.
I've updated the source code and the Visual C++ binaries

Sunday, December 16, 2012

OutRun In Widescreen

Hey, guess what I'm working on.... and this is just 60 minutes of work...

Still a number of bugs to be fixed and things to be figured out before I release this :)

Update: It's done. It's actually quite awesome to play OutRun like this. I'll post some binaries later this week after further testing, or you can build right now from the develop branch... 

Saturday, December 15, 2012

Cannonball: Open Pandora Port

Congrats to Seb, who has ported Cannonball to the Open Pandora handheld. 

Download it from the Cannonball binaries page. More details, including the source code, can be found in the thread here.

Currently, it's running at 30fps but does support the other bells and whistles. Reportedly, it's a better experience than playing OutRun under emulation on this platform. I've rolled some optimizations into the develop branch on github, which should help ports of this nature.

I apologise for the lack of updates recently. Sadly, my house got broken into so I've been busy organising personal matters lately. Some OutRun memorabilia was stolen too which was a real shame as it is probably not replaceable  and will no doubt just be junked. On a positive note, I'm going to investigate a genuine wide-screen mode for Cannonball as my next endeavour. 

Wednesday, December 05, 2012

Cannonball - Full Screen & Options Update

Firstly, thanks for the kind words and interest surrounding the project. It's much appreciated. I've taken some of the initial feedback on board and released a new version. 

The highlights are:
  • The beginnings of the configuration system. Currently, its an XML file you must edit manually, but this will eventually become a cool in-game GUI.
  • Full screen support
  • Scaling in windowed mode
  • FPS options. Disable the 60fps mode to recreate the original experience. 
  • Gear options (automatic option & support for cabinets with a switch based shifter)
  • Configurable traffic (including the ability to disable traffic entirely)
  • Configurable time (including infinite time)
  • Advertise sound option
  • A new online manual available here
  • MinGW build now includes necessary DLL files
  • Visual C++ build definitely built in release mode this time :)

Binaries are here.
Source code is here. (get compiling for some different platforms!) 

I'll be taking a break from coding over the next week, before diving back in and adding configurable controls. 

Sunday, December 02, 2012

Cannonball Source Code Release

I'm delighted to announce the release of Cannonball; a portable C++ OutRun engine. This is the product of many years of reverse engineering, hacking and debugging.

The entire OutRun codebase has been decompiled and rewritten from scratch in C++. This extends to the Z80 sound program code and therefore full audio is supported.

Not only that, but the game now runs at 60 frames per second and many bugs present in the original code are eradicated.

This is just the beginning. Future releases will include a full menu, proper control, video & audio configuration  plus an array of options and game modes not present in the original game.

I'm hoping to find OutRun enthusiasts who will port Cannonball to a variety of platforms. I'd love to see Linux, Mac, Wii, Raspberry Pi and other platforms supported. I will facilitate serious offers of help. We can ensure that any changes make it into the master branch, so it's easy to keep ports up to date.

The codebase isn't perfect; the original code from 1986 can prove messy and inconsistent. Some of this is naturally carried through to the rewrite. For now, the focus has been on the accuracy of the conversion, at the expense of serious refactoring. But that's not to say this isn't a viable future goal. And I've been working on this long enough, it's time to release.

Why do this? Because I love OutRun, and no one else would have done. Thanks to those who have followed the project up to this point. Any questions - post them below!