Sunday, January 20, 2013

Cannonball Mac OS X Port

Marcus Herbert has kindly ported Cannonball to OS X. Congrats! It currently runs on OSX Leopard, Snow Leopard, Lion and Mountain Lion.



Marcus writes "It currently is fluid on a Core i3 iMac (you get some stuttering at some place if you choose 60 fps)". You can grab it from here.

I'll work on getting his changes back into the main source tree in due course. 

Monday, January 14, 2013

Higher Resolution Mode

I'm working on running OutRun in a higher resolution using the native graphics (i.e. no new graphics are required). 

In the below screenshot, I've split the image between the original resolution scaled up (left) and the higher resolution (not using scaling). Ignore the fact that the road and background are missing for now, as this is still work in progress.

You can see that the start sign and road signs on the right are much clearer. 


This doesn't help objects really close to the camera, as the original sprite files aren't particularly high resolution to begin with. But it does help images in the distance. The Dreamcast port does something similar

OutRun actually has five copies of each sprite, manually tweaked to look as good as possible at different zoom levels. I made an initial attempt to go one step further and completely replace the lower resolution sprites with their higher resolution counterparts. But the results didn't look good. I'll keep working on this. 

Sunday, January 13, 2013

Cannonball 0.15 - Time Trial Mode

Time trial mode is here. Here's how it works:

Select TIME TRIAL from the main menu. Choose the number of laps you want to race for. You can select the maximum amount of traffic you want on-screen at any time. You can also disable traffic completely, so it's purely you and the race track with no random elements.


Select the track you want to race by pressing left or right. The lap time in the bottom left shows your best time for the selected track. The course map screen is reused as an attractive level select:


And we're off. You're reminded of the time you have to beat when you start the stage. Normal scoring has been replaced with a counter that represents the number of vehicles you've overtaken. 


In the screenshot below you can see I've just started my third lap of the track, and achieved the best time. Yay. You'll notice that the lap times you've achieved so far are shown top right. I wonder where I got the idea for that?


After the final lap, you're presented with some nice (or useless depending on your point of view) stats:


Both the Japan and World tracks are playable in this way. Each set of tracks have their own unique times. 

I also added a config.xml option to toggle some of the bugs and a music test menu. In the original service mode (which isn't ported yet), Last Wave can't be selected, but now you can.

Please report any bugs below. I changed some of the core code to implement the time trial mode. Hopefully I didn't break anything too badly in the process.

Update (15th Jan): Fix for redefine keys not working.

Saturday, January 12, 2013

Unused Prototype Coconut Beach Track

Whilst working on the track select for time trial mode, I uncovered an unused OutRun track layout.

It appears to be an early prototype of Coconut Beach; and is found in all versions of the game. It is significantly different from both the Japanese and World versions of this level. It's tougher, with sharper bends although the final chicane is missing.  You'll notice there are a few scenery changes, as well as small amounts of ground debris. There are also scenery errors with directional signs pointing the wrong way.

Here is a video I recorded in MAME:


The level can be enabled only by using the MAME debugger. You will need to set the following breakpoint on the master CPU (Revision B romset):

focus 0
bpset e4ea,1,{b@260010 = 3A; g}

This breakpoint will swap out the final Coconut Beach track for the prototype.

UPDATE: This track is now playable in Cannonball.

Wednesday, January 09, 2013

Videos of Cannonball & Enhanced Edition

Here are two videos showing the projects on this site in action!

Cannonball running on the Pandora platform:


OutRun: Enhanced Edition running on real hardware:
I love this guy's enthusiasm. He is pretty bad at OutRun though! ;)


Sunday, January 06, 2013

Time Trial Mode

I'm working on a time trial mode. Choose any track, choose the number of laps and aim to achieve the fastest lap time! I'm also going to record other stats, including the number of overtakes. Here's a screenshot:


This is a genuinely new mode, focusing on track mastery as opposed to linear progression and the first small step towards taking Cannonball in a new gameplay direction.

Suggestions welcome in the comments, although aiming to keep the scope of this first project manageable in order to have something released this month. 

Saturday, January 05, 2013

OutRun: The original game shipped with corrupt sound samples

Thanks to David Haywood for alerting me to the following information. Checkout his blog if you haven't already, it's a terrific read.

It would seem that OutRun shipped with a corrupted ROM containing some of the percussion samples used by the music tracks. Every music track bar Last Wave, is affected by this. Even the original sound track CDs, recorded from the production boards, contain the glitch!

The offending rom, opr-10188.71, appears to have a single bit stuck high (xx1xxxxx). The sample data is distorted as a result.

Hiro Kawaguchi, the composer, had this to say on January 18th 2007 when discussing the 20th Anniversary Edition release:
Isoda (recording engineer) listened the sound of OutRun before recording, then he noticed that drum sound is very noisy. This is strange, so he checked the board. Then he found one of the ROM is bad (bit6 is always ON)." 
Using Google translate, he goes onto say they recovered the original samples from the CP/M format disks for the 20th Anniversary boxset.  Listening to the 20th anniversary rendition, it is indeed correct. However, older versions, including the 1996 Sega Saturn release appear to contain the glitch.

You can visually see the problem in the screenshot below. The bottom waveform is the glitched version. The top waveform is a corrected version. Unfortunately, we're not certain of the origin of the fixed version. Was it provided by one of the original developers, or manually fixed?


The fixed version has not made it into MAME, due to their focus on reproducing the original experience accurately. However, there's no reason this fix can't be incorporated into Cannonball or the Enhanced Edition.

The samples in this file include the wood blocks and big cymbal crashes. The most noticeable difference is for Splash Wave, which uses many of these samples in it's introduction.

The improvement is most noticeable when using decent headphones or studio monitors.


Edit: I updated OutRun Enhanced Edition with a patch for this issue.