Cannonball - The Enhanced OutRun Engine


The download page has moved here. The blog remains on this site.

Copyright (c) 2012-2014 Chris White.
OutRun is a trademark of the SEGA Corporation. This project is not affiliated with SEGA in any way.

74 comments:

Unknown said...

Hello, great job. It is the first time I saw extracting source code from binaries (ASM does not count)! I wanna try your release but I do not want to install visual C and your binary was released in debug mode (means it needs msvcp100d.dll)and the distributale runtime library does not provide such dll.

yt said...

I uploaded a mingw32 compiled build, that should work without the Microsoft stuff :)

yt said...

Also, the Visual Studio compile should be fixed now (no debug DLL needed). Give it another go.

Unknown said...

Hi, I tried both versions, now the visual c++ make my screen blink and nothing happens. The mingw32 complains about a library (just like visual c++ did) libgcc_s_dw2-1.dll. I am using Windows 8 pro 64 bits. I will be happy to try if you have any idea.

yt said...

MinGW: Google the dll and download it?

Visual Studio: Should create a stdout.txt file with any errors in. Have a look at that to see if there's a problem.

Anonymous said...

It looks like it requires one file from Rev. A, "epr-10381a.132". I had the same issue as you, Marcelo. But adding that file to the roms folder fixed it for me.

If that doesn't work, run the vc++ compiled exe from the command line so you can actually read the error it spits out.

Chris23235 said...

Hi, looks great, but is it possible to change the sceen size? It runs in a tiny window.

Unknown said...

After providing "epr-10381a.132" it works like a charm. Thanks a lot 49r2pbmaedzdfnz and yt!

yt said...

Glad you got it working.

The file you mention is exactly the same between versions. So renaming your existing one would have worked ok.

The first stage of the config (window resizing, options etc.) is landing tomorrow hopefully. You can get a preview here as it's in the develop branch:

https://github.com/djyt/cannonball/blob/develop/files/config.xml

Following that, there will be a proper menu system to toggle this kind of stuff.

Vasiliy R. said...

Hello, can you port it to Dreamcast ?

Unknown said...

Fantastic job on the widescreen mode! I'm glad it turend out so well.

Regarding the music screen and map screen....How good are you at moving the tiles around?

Check it out:

http://imageshack.us/a/img803/4963/cballws.png

http://imageshack.us/a/img203/3001/cballmapws.png

I was messing around in photoshop last night just to see how much it would take. Nearly everything in these two mock-ups are just the default tiles flipped and moved around. The only exception is the left side of the wheel.. It wouldn't mirror due to the guages.

If you would do the code for the tile positioning, I would be willing to do any additional sprites you may need.

Also I found a very minor bug. The numbers in the custom track titles are one off. (You have to use a "3" to display a "2" ect...)

Regarding that, would it be possible to have a preset selection option in the setup menu you made? There are three versions of those tracks in Outrun 2k6 alone, so it would be nice to be able to switch a set on the fly before going into the main game.

Anyway keep up the great work and thanks for this!

yt said...

Hi Howard,

Good work on the art redesign. I'm holding off in this area for a number of reasons that I'll explain below.

Theoretically, it would be dead simple to just take PNGs of your work and include them with the engine. However, I do not want to include any modified original artwork bundled with the program for copyright reasons. The new menu system, for example, requires the ROM for its font, logo and so forth.

This leaves us with the option of editing the actual tilemap as you suggest. The music selection screen uses a tilemap, whereas the course map screen uses sprites.

To avoid a headache when editing the screens, I'd have to code a tile editing tool and a separate tool for the course map screen as it is sprite based.

This is all possible, but is relatively time consuming so not top of the priority list at the moment. There's arguably a bunch of more important stuff to do.

Having said that, I'm not ruling this out - we might just be talking about something I do in 6 months time, rather than in the upcoming weeks. I'll use your images as a basis to work from if I work on this.

Groups of music tracks - I had thought about this, but didn't want to complicate things unless there was demand. Again, it's something I may implement in the future.

I will fix the tile bug you mention too.

Hope that makes sense, and thanks for your comments!

Unknown said...

Yeah I get what you are saying... looked at the tile code last night and it would be a major pain in the butt. The map code is even worse.

There are rather tricky ways around having to include custom art though. Since the engine is capable of reading and rendering the tiles would could render (in memory only) a single frame of each screen before the text is applied, and then cut it up make a bezel of sorts on the fly. It's not the most elegant solution to be sure, but it does prevent the copyright issues you are talking about.

It would actually be easier that way. for the right side of the music selection screen I literally just took the right 25% of the screen and flipped it. For the map screen I took the entire wave image, mirrored it once to bring it over to the edge of the screen and then copied it and moved it down and to the left, to extend the cost line a little.

I agree 100%, low priority, but I just wanted to give you options. :)

SuperDeadite said...

Hi this thing works great. Thanks a lot. :) One request, could you add in a "fake scanline" option? This would make the game appear more like on an actual low-res arcade monitor. The pixels would look less jagged, but does not sacrifice graphic detail (like filters do).

yt said...

SuperDeadite: I'll do scanlines at some point soonish :)

Anonymous said...

Regarding the wide-screen map and other changes maybe you could consider a slightly different approach.

Instead of using the ROMs directly you could have a little tool to convert them into native 'pack' files.

Users would then be free to reskin and rework the various screens / tilemaps / courses in an easier to modify 'native' format (eg you could probably describe the tracks as some form of XML?)

Using this scheme users could either convert the roms, or instead you could have a repository of user-created replacement data, and have a 100% free game based on OutRun (similar to how OpenTTD, Simutrans etc. work)

Obviously that way if the provided tilemap dat file was wider than a regular screen it could be interpreted as a wide-screen image, or if a bezel was provided for such situations that could be used instead.

I see you've already done similar for the sound, but by not having the engine *directly* tied to the roms for any of the data at all you open a lot more avenues. A completely redrawn HD version with user graphics, tracks, music etc. would be quite awesome.

It's possible nobody will bother, but Outrun is a popular game, and even if somebody drew a new car graphic you could potentially offer it as a download as a replacement for the one extracted from the ROMs, and that would be rather appealing alone even if it was just a visual change. Likewise a track pack, redrawn backgrounds, you name it.

Of course unless the user used the conversion program on the original OutRun roms they'd be getting something a bit different, and there will always be the slight legal question over the actual code (it's in effect a manually done static recompile based on the original ASM so Sega could still claim they own it) but obviously you've not let that discourage you so far.

The research and easter egg finding you've done has been really interesting too, and while I've not paid extreme attention to this (because my favourite Outrun is Turbo Outrun with the weather effects etc.) I still think it's a very interesting project with a lot of potential.

David / http://mamedev.emulab.it/haze/

yt said...

Hi David,

That's a great idea and a cleaner solution. I'm going to focus on a few other ideas I have first, but it seems like the way forward.

It won't be easy; so much of the track data in OutRun is a combination of hard coded values paired with genuinely flexible data. But starting with some simple areas like the Ferrari or static screens could be a good way to go.

Thanks for the effort you've put into MAME and your blog over the years. It's proved interesting reading.

You're the first person I've spoken to who prefers Turbo OutRun over the original, but I won't hold it against you. ;) :D

Anonymous said...

It's probably because Turbo Outrun was the first (arcade) one I played, I can see why people might not like it, it seems to suffer from worse framerate issues, has a more linear game structure, and doesn't have the catchy music and my feelings for the original had already been ruined by the terrible ZX Spectrum version.

anyway, don't know if you know this, but every copy of Outrun ever made shipped with a fault sound ROM, from the factory

opr-10188.71 FIXED BITS (xx1xxxxx)

this means for that sound rom you only have 7-bits of valid data instead of 8-bits.

while it's possible it was a design choice, it's more likely it was a mistake.

there is a handcrafted 'fixed' sound rom floating around which apparently improves the various samples stored in this rom so they sound more like they were probably meant to sound in the first place. MAME doesn't support this ROM because it was never in any situation used on a shipped PCB or bootleg that we know of, but it might be something to consider for your enhanced version.

I can create a xor against the original sound rom or similar if you wish.

yt said...

I was unaware of the sound rom issue. It's certainly something that should be fixed; my primary mission is to create the definite (but faithful) version of the original game before moving onto graphics mods.

If you can e-mail me the files, I'll see what I can do.

http://javagear.co.uk/images/email.png

Did you read my the interview with the coder of the Spectrum version here?

http://reassembler.blogspot.co.uk/2010/05/interview-with-alan-laird.html

You sort of feel for the typical time pressures they were put under. But yes, none of the original conversions (including the Genesis) were faithful. Even the recent GBA port was somewhat dubious.

The C64 version of Turbo OutRun was awesome.

Anonymous said...

Ok, emailed.

I did read the interview, I can't help think some of the choices made were wrong (visuals over speed) but with the short development time and deadlines back it's understandable that once you've decided on something you don't really have time to go back and try an alternative approach.

Even the (amazing at the time) Chase HQ versions actually have quite low framerates if you look at them today, but when you consider the hardware they're really amazing, not even the Japanese dev studios game close to getting anything like that out of their 8-bits although their machines were quite different to ours.

I think one of my favourite racing games of the time had to be Wec Le Mans, both the Speccy and CPC versions were very playable, although I wasn't too keen on the reworked CPC6128 "Burnin' Rubber" which is very clearly meant to be the same game ;-)

In the end I would have definitely enjoyed Outrun on the speccy more if they'd just gone for half-size sprites and a faster framerate.

Anonymous said...

one further thing

does the 'offroad' trick work with your engine? I can't see mention of it on the blog (although I might just have overlooked it) but OutRun contains a glitch (some call it a feature and the origin of the name OutRun) whereby you can drive off-road without losing any speed.

It's a little controversial, but many of the MARP replays for MAME, and record attempts shown on YouTube make use of it.

http://forums.marpirc.net/viewtopic.php?f=9&t=10123

some of the videos uploaded by this guy use it in places (linked from the top leaderboard score on MARP)

http://www.youtube.com/watch?v=p-J1zspTu4A

basically it involves quickly flipping the gear at exactly the right time to maintain your speed, it also works on the Genesis version.

(I'm not very good at pulling it off)

yt said...

The offroad (gear-gacha) trick should certainly work, but like you, I find it difficult (and not very enjoyable) to pull off.

If it doesn't work, then there's a bug in the engine which needs to be fixed. :-)

A while ago, I picked up the Gamest magazine from 1987 that first reveals this trick. It has around 6 pages of detailed OutRun diagrams showing how to pull it off at various stages of the game.

Some of the laserdiscs and VHSs released in Japan in the 80s show the trick in action too.

I can reproduce the 'rocket start' cheat on Cannonball which also takes advantage of quirks in the gear changing system.

As for the conversions, I'd agree in hindsight that some of the decisions made were wrong. But then again, I don't think OutRun on the Spectrum was ever destined to be a stellar experience. Even with Chase HQ's engine, I wonder how enjoyable it would prove. Chase had the advantage of barriers to smash, mid-level road forks, tunnels, cars to crash into etc.

In a world with infinite time, I'd love to have a go at rewriting it - but I suspect that's never going to happen. :D

Wec Le Mans had the same artist as Chase HQ (you've probably seen the interview I did with him on this blog).

I am very (very) excited about this ROM business, but will drop you an e-mail on that!

Unknown said...

Something I would like to see, that would be similar to the widescreen mod would be to see Outrun running at a higher resolution.

I'm not referring to upscaled graphics, but rather a higher resolution game engine. That way when things are rendered off in the distance you could make them out better instead of them being unrecognizable blobs. Also if a tile/spirte editing system were introduced it would naturally make it easier to inject high res graphics into the engine.

I could see a person extracting the models from Outrun 2k6, making the appropriate frames out of the car model and putting them back into the game for a "fake" 3d look.

yt said...

Agree. Upscaling would be very cool.

I'm pretty sure the Dreamcast version does something similar to what you're suggesting.

See this thread for more info:
http://forums.sonicretro.org/index.php?showtopic=30266

Unknown said...

Yeah that's pretty awesome. I knew it was odd that the signs on the spite rips were readable and yet they weren't when you played the game.

They probably intended to run the game at a higher res but hardware limitations caused them to scale things back or something.

Kungfu Steve said...

Sorry, but Im not sold at all on Upscale. Comparing the Dreamcast pic to the Arcade pic... one things jumps out immediately: The Racing Lights. One the Dreamcast, they are flat, without any shading. On the original, they have two highlight points in each light, to show that they are in fact round glass covers. (not flat)

Additionally, what you do not want, is crystal clear graphics for miles. The reason, is that its not conductive to realism with Focus.

Anything far away, should be a bit blurry, and if its really far away.. theres a shift in the colors as well (lighter grayer or pastels + less contrast).

While a modern camera, and even the human eye can see very far with clarity... this doesnt make for a good game, because its makes the game feel and look flat... like a piece of paper.

By exaggerating the distortion effect, some blur, etc... you get a much deeper 3d look to the game. It no longer feels like a piece of flat paper.

Even good photographers (and cinema movies) use tricks to create exaggerated focus depths.

Kungfu Steve said...

One of the reasons why Outrun holds up visually, when so many 3d or even other higher resolution pixel drawn games do not... is the quality of shading, the contrast, the beauty & variety, but mostly, because it looks like a moving oil painting.

Even when viewed on modern monitors, the low resolution pixel distortion creates a very artistic look.

By making things too clean, it simply makes it look phoney, and dated. It clashes. Things like signs that you really shouldnt be paying attention to, now readable, capture your attention... but in a bad way. Its far better when they are so distorted to the point where they do not draw your eye to them.

Kungfu Steve said...

Nothing has beat the Original Outrun Experience. IMO, I think things like widescreen, stereoscopic 3d, new levels...are fine. But tweaking the way the graphics are drawn? I sure hope thats not an option that you cant turn off.

The only way I could see it working, is possibly if someone who is a really good artists, (not a photoshopper / vector guy... but and actual artists who known how to shade properly, color rules, etc... would create an alternate set of graphics. Even then, Im not so sure it will work.

Theres just something magical about real Pixel Art. (vs 3d models & photoshop / vector creation)


Hmm, I do wonder about how a natural media Oil-Painting version would look like however..

Kungfu Steve said...

One thing that many, Including myself, disliked about Turbo Outrun, was the lack of realistic 3d shading, found on the Original. Most especially on the Car itself. There was pretty much no shading from a rear perspective, so the entire experience felt like a cartoon. It didnt help, that the game also played like a cartoon. The stupid jumping over illogically placed speed bumps, Massive ugly 3mile oil spills, ugly construction cylinders. And more. The original feels more like an attempt at simulating a real fun driving experience, though beautiful countryside... where as Turbo Outrun, seems more like a mockery cartoon, driving thru some of the most boring and ugly settings imaginable.

The weather was interesting, but, it mostly slowed the game. It also didnt make up for the boring level detail & lacking beauty.


Of course, Outrunners is one of the worst offenders. This time, they used more of a high-noon top shading on the cars... which lends to a poor flat looking quality. The land, background, images, car, people, all were mis-matched in the ways that they looked. (Some photographic captures. Some cartoon style shading. Some hand shading. Some shading that had direction... and some that was top-shaded. And of course, the dreaded mirror flip shading... which is ok on small things here and there.. but not on large things like signs in the middle of a road, nor should have been used in a game of this date and time. It was 'all over the map' horrible)

And worse, the control and gameplay was horrible. It had became a baby game, with no challenge.. as well as a sad joke, with its over the top cartoon level antics. ('ouch' messages when bumped, 7 mile long sideways skids without any serious slippage at all - leading to Zero challenge, Zero intensity, and for me... Zero more replays.

Outrun went from Epically artistically beautiful & challenging Simulator.. to ugly cartoony Kiddie Ride.


The 2K versions looked visually nice, however, they were not outrun by any stretch. The horrible & unrealistic million mile slides returned. Low traffic. No comparable intensity. No violent Shaker Motor. No mega huge blind-hills (that I recall).

If I want to power slide, Id rather play the much older Ridge Racer, which at has better control & a more realistic driving gamplay experience, with a lot of skill to master.

yt said...

Hey Steve, as with any 'enhancement' in Cannonball, you'll be able to switch it off. The same as for other features like widescreen, scanlines and smoother gameplay. The appeal of all these features is subjective.

However, the graphics do become more blurred in the distance with this mode still. You can see it with the line of trees heading into the horizon. As I mentioned in my post, each object has five variants. So this is naturally how the engine works anyway.

All the hi-res mode potentially means is that the overall quality of the graphics is better, and the art is relatively less distorted by what is ultimately bad scaling (you would be able to read that sign if you were that close to it after all!). Objects in the distance are still more blurred.

The fact that this mode went unnoticed on the Dreamcast for so long is an indication of how subtle it actually is when in motion.

Unknown said...

Yeah this is more akin to fixing a bug like a lot of the other enhancements. They wouldn't have drawn the sprites with that level of detail unless originally they wanted them displayed that way.

Hardware was oppressive back then.

Kungfu Steve said...

Hi yt,

We,, Im not sold on that statement either. Remember, the original development was done on a low res spec.. so any art created for it, had to be hand drawn to fit that spec, and look correct on the arcade monitor.

The Dreamcast however, was not a simple resolution change. If you compare the two start screens:

http://blog.hardcoregaming101.net/2012/10/yu-suzuki-game-works-vol-1-outrun.html

You can see that some of the signs, such as the cat one, are completely different. They are brand new re-draws. Not original sprites.

As such, when you look at the Racing light, you see that the new artist had forgotten to put the highlight points on them. This is a common mistake, especially when two different people work on something... and or things were rushed, or corners were cut.

And yes, when we get close up to a sign, we should be able to read them... however, thats reality. Art however, is different from reality. Its interpretive. For example, the reason why an Oil painting, or character drawing, has more value than a Photograph. is because of its interpretive value. Its not an exact pixel perfect replica. Reality is a bit boring. Reality can be too ugly. Too harsh. Maybe we want a sky that has colors that are more vibrant. Maybe we do not want to capture all the wrinkles, makeup, blemishes, and lines, of our Wives portraits... (and or even our own)

When we look down a street, and see construction cones, cracks in the street, power lines, awful ugly beat up buildings, and adds for hot dogs on billboards... we may feel depressed inside. A game, like Outrun, is meant to give you the driving experience you would want... not a reality experience. Not a photographic experience. Yes, there are add signs... but they are blurred to the point where they dont really attract your attention much. This maintains the feeling of speed, and challenge of not hitting them.. but not making them intrusive to the experience.

Similarly, if you look at the palm trees... you can see they have a jagged hatch look to them. However, when viewed on a real arcade monitor, the look is more smoothed out. More blended.

SO, when you say the quality of graphics are better... I have to disagree. Higher resolution does not necessarily increase quality. It can be more revealing... but it can also be detrimental to the look (and emotional feel) as well.

On the other hand... If you upped the resolution... did some re-draws, and then added some exaggerated blurring and color shift effects... you might actually create a really interesting result.

But, by simply upping the resolution, you actually make the graphics even more harsh and ugly, than they are supposed to be.

Id almost say a good pixel mixing algorithm would be a nice thing.. but, they often do not produce the correct shading desired. They do not do well in the re-creation of intentional texture... nor can they fill in the missing details of higher resolution textural data.

Pre-rendered objects do not work that well usually either.. cause you cant raytrace entire environments. Light sources, shadows, shading.. will all be off depending on where things are placed, and what the intended lighting is. Often, it looks almost as bad as pure photographic captures. Flat, un-artistic, and annoyingly upsetting.

Anyways, if something is done as interpretive... it cant be 'wrong'. (so long as the basic principles of shading and light are applied somewhat realistically) There are no defects, because the entire thing is a media interpretation. This is why it never feels as dated, as many other newer 3d racing games.

A good example, is comaparing Ridge Racer, to the latest console racing games. They make RR look almost un-stomachable. But Outrun, still looks great. (much better, on a real arcade monitor, where things are blended better / properly)

Kungfu Steve said...

"Yeah this is more akin to fixing a bug"

Would you call an Oil Painting a bug? How about a hand drawn comic character that has exaggerated perspective and features?

Yes, while its true that if they had higher resolution to work with, they may have taken advantage of it...

However, the things drawn, were hand drawn, and hand shaded, specifically for that resolution, and low-res arcade monitor display. You cant call that a bug... because they were not intended to be as clean as you believe they should be. Just the same, many people seem to think seeing squared blocky pixels is classically accurate. When in fact, most of the arcade monitors used lower dot pitch, and colors blended. Pixels lines were less jagged, and more rounded. Even the color palette and range, is different on such a display. The pink in the main car on Turbo, isnt meant to be seen like that. Its meant to blend to the nearby color, creating a more fluid shaded effect. An effect they planned and designed intentionally. Had they a higher dot pitch monitor, they would never have used pink lines on the car, and would have used different shading altogether. So, you cant just UP the resolution, and display it on a SVGA display, and call it Better. Its not better. Its worse. Much worse.

Kungfu Steve said...

http://www.youtube.com/watch?v=Z-8aZScOfCY

&

http://www.youtube.com/watch?v=EZW8yglpvRY

&

http://www.ebay.com/itm/Out-Run-Arcade-Game-by-Sega-/300828116958?pt=LH_DefaultDomain_0&hash=item460ac0c7de


Compare above to below:

http://www.youtube.com/watch?v=X4Roy1huEZM


Which one is better? If anyone answers the bottom, I will reach thru my monitor and slap them with a fish. :P


The type of monitor, with larger dot pitch, larger & thicker black mask-lines, the effect of the staggered display (scan lines), and more... all help to blur the jagged edges, blend colors, etc... to create a textured picture, that looked more like a painting, rather than a blocky jagged pixelated nightmare.

Furthermore, it wouldnt surprise me, if certain arcade monitors were intentionally de-tuned out of focus... to better blend things. Biggest problem now... is people forgetting what these games really looked like (especially since a lot of the older 80s low-res monitors were replaced, and even though they were still low-res... their shadowmasks were thinner, thus they have different output looks) ..and them gushingly in love with square pixelated looks, thinking thats how they were meant to be seen. Sorry, but not so.

yt said...

I separated my work into two distinct areas, the enhanced edition that you can program to the original machine (for a more faithful experience) and Cannonball that takes the project in a different direction. Sounds like using the Enhanced roms on the original hardware might be more your cup of tea.

Incidentally, I should point out that the highlights you mention on the lights are in fact scaling artefacts. You can use my System 16 Sprite Viewer to verify this.

Here's an image of the original art at 1:1 to prove it:
http://i50.tinypic.com/2eo9lao.png

Unknown said...

Steve... I think perhaps you need to stop following this thread if it angers you so.

You are also 100% wrong. You talk about Outrun's resolution and the pixelization of the game as if they are related. They are not. The fact that we are running things on a modern monitor is the difference you are talking about. The added scanlines already help some, but if you want that built-in blending, then run it on an arcade monitor!!!!

The Mortal Kombat games, the NeoGeo games, they all run at a higher resolution than Outrun. Rest assured that the developers DID intend for the game to run at a higher resolution, it's just hardware limitations prevented this. Again, they wouldn't have saved them at a quality they didn't indend to use.

The Outrun logo in the Start banner is a prime example. It's so cruddily rendered as-is that the circle around the car is broken. Nobody in their right mind would have done that on purpose. If you look at the DC version, the circle is complete. They didn't change anything other than the native resolution that the game was running at.

Again, this just renders the graphics at full resolution, making them look better, it has absolutely nothing to do with the way a low dot pitch arcade monitor would blend them and btw, even this enhanced resolution would STILL get the blending that an arcade monitor provides if ran on an arcade monitor. Running the game at a lower resolution makes it MORE pixelated, worsening the issues you are complaining about.

Regardless, your are obsessing. You posted multiple, long paragraphs rambing on about how Outrun looks like an oil painting and such. This is YT's project, please let him do what he wants with it.

I apologize, it wasn't my place to butt in, but it was getting to me.

yt said...

I've seen this same debate countless times on internet forums and I don't expect it to ever be resolved as its subjective ;)

Ultimately just use what appeals to you - there are plenty of options and don't expect to convert anyone else to your cause.

I hope you both enjoy following the projects either way - I've enjoyed working on them and this should ultimately be a bit of fun. :-)

GreatLamer said...

Super cool. I would like to see a splitscreen support (like newest pc games returning to oldschool). Thanks for your yob!

Unknown said...

Hi, great project! I've managed to run it no probs on my work Mac, but having trouble on my WinXP arcade machine. I get 'This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix the problem.'.

I've installed the x86 Visual C++ library...not sure what else could be wrong. Anyone got any ideas? Thanks!

yt said...

It means that your Microsoft libraries are somehow at fault:

http://www.coffeecup.com/help/articles/this-application-has-failed-to-start-because-the-application-configuration-is-incorrect-error-message/

Googling the error message brings up a bunch of solutions.

R_Pinta said...

Hi, I'm trying to understand how the x-coordinates of the track are stored in the rom. Why there are 2 values for each x position? (x1 and x2). I've read the "automapping tool" post and the comments in oroad.cpp but I can't figure out how this two values are related (if they are at all).

For instance, on the first segment x1 is 0 and x2 is 4096.

Any clue? Thanks in advance!

yt said...

Firstly, the x-coordinates of the track are not directly stored in ROM. The data is interpolated into screen x and y co-ordinates by various algorithms in the game code.

If you let me know what you're trying to do, I might be able to help a bit more. I could send you the source code to the tool that plots the level path for example.

It's more than a simple tool to extract data from the rom, it's partially ported code. I render the output to a series of x-cordinates.

R_Pinta said...

I was trying to read the track values from a text file instead of reading them from the rom (seems quite easy for the x-coordinates, the hard part is generating that file). Of course I'm not trying to make a full editor, just wanna play a bit with the code in order to change the track, and maybe make a simple application to generate a track file.

I understand that the screen position of the each segment of the road is calculated with complex operations (using x position, height and width), what I don't understand is the way the x values are stored in the rom.

I'm gonna read the source code more deeply to try to understand the road generation algorythm...

Thanks for your quick response!

sapin said...

Hi! I have a question about how remaining seconds are added to score at the end...i.e. 4.4 seconds x 1000000, then my total score should be 10.000.000 (2m x track) and 4.400.000, a total of 14.400.000, but I get 12.3 m or something alike. I remember in arcades reaching a total near 66m, with secuence RLRRR, and a remaining time of 56.x seconds.

sapin said...

Hi! I think there is a bug in final score. Like in arcades, you can read "xx.x seconds x 1.000.000", wich are to be added to 9m or such that you made for end the five courses. I just get to the end with 35.2 seconds remaining, and I get only 13.775.550, less score than in a previous game of 20.0 seconds remaining. Check out the screenshots:

http://img801.imageshack.us/img801/2103/highscores.jpg

http://img685.imageshack.us/img685/8533/endtw.jpg

yt said...

Hi,

I suspect you're oversimplifying the scoring. It's more than simply how much time you end up with. There are multiple factors:

1/ How fast you're travelling at particular points of the level.

2/ Number of cars you've overtaken. Overtaking a car is 20,000 points. So a few extra overtakes can make a big difference.

3/ Different routes increment the bonus seconds by different amounts.

More details here at the bottom of the post:
http://reassembler.blogspot.co.uk/2012/04/traffic-code-ported.html

Compare it with MAME and see how you get on.

sapin said...

Thank you for your quick answer.

I just played a round in Mame, ended up with 20.8 secondes, and the score is in the 30 m just about I said before (9 m courses, 20.8 m seconds, and the cars overtacking)

Look at the screenshots:

http://imageshack.us/a/img545/748/0000q.png

http://imageshack.us/a/img845/1893/0001yg.png

yt said...

Congrats - you found a silly bug.

The good news, it's fixed for the next release.

If you were wondering I had a line that read:

ostats.update_score(100000);
during the bonus routine.

It should in fact have read:
ostats.update_score(0x100000);

Tetrafish said...

I think I've found a bug with Prototype Stage 1. I switched on the 'Prototype 1 Stage', played 1 or 2 games, then switched it off - but that didn't revert the 1st stage back to the (correct) layout. I had to exit for it to correct.

yt said...

The prototype issue is already reported and fixed for the next release, due out this weekend: :-)

https://github.com/djyt/cannonball/issues/7

sapin said...

Now with 0.18, ended up with 33 seconds remaining but get 31.8 x 1000000.
I don´t remember this like a normal behavior in the arcades. What do you think?

dude said...

could you add a "very easy" mode with 30 additional seconds?

El Nerf said...

http://www.speccy.org/spa2/Inlays/Outrun(Erbe).jpg

;))

Endaar said...

Hi! Awesome work on this, it's an impressive accomplishment.

Two comments/suggestions based on the v18 binaries for Windows:

* The analog support appears to work only for joystick #1. My arcade cabinet has a joystick as ID 1 and a wheel as ID 2, and the wheel is just not seen at all.

* Are there any plans to add additional display options besides the scanlines? I'm not a fan of them, especially as you lose the fullscreen display. I use the aperture2x4rb setting with MAME and think it looks pretty good on my LCD.

Thanks again!
Endaar

Tetrafish said...

I don't know if you'd be interested in doing this. The Mega-Drive version has a track called 'Step On Beat'. Would it be possible (or even feasible) to see how the songs play or are coded in the arcade version, compare that to the MD version (whatever data is sent to the sound chips/hardware) and somehow implement the code/data for the music of 'Step On Beat' into the arcade version?

Perhaps I'm presuming such a task to be much simpler than it actually is. I don't mean a straight transfer of data -per`se, but more like a translation.

yt said...

Tetrafish: I like the idea of creating some kind of tracker utility to create songs for OutRun.

I'm not sure how difficult it would be to convert Step-On Beat, but it's not something I would be inclined to spend time on as a one-off.

Endaar: I can see if I can add a setting to swap the joystick port on a future release.

As for display options; I'm not ruling it out. It's just not a top priority for me at the moment. I'm more interested in investigating level creation tools that slavishly implementing video filters.

dude: Probably not - I've kept the timing options the same as the original arcade dip switches. Just hit F3 to freeze the timer at the start of a race to add the 30 seconds, or set the time to infinite if you need more.

Raúl MJ: You've probably seen my recent post that explains the track format, and the fact that all the co-ordinates essentially relate to points on a circle. I have enough detail now to create new tracks, and that's the next focus.

sapin: I would need to spend time investigating further. It should be ok now following the bug fix I mentioned, but maybe I've missed something.

Lots of replies, think I need a forum or something :)

The general thing to remember with all feature requests, is that I have a limited amount of time. And ultimately I'm going to pick the things that are most exciting and/or challenging to work on. Selfish, but true! :-D

yt said...

sapin: The bonus counter bug should be fixed now. Try the new build (v0.181) and let me know how you get on.

dude said...

how can you show the actual FPS in game?
is such a function built in? i dont know if the game is running at full speed

Tetrafish said...

Re: (dude's ^comment), what about FRAPs? I tried using it but didn't see the frame counter in the corner so I don't think it works (unless I didn't do something right). Maybe someday...?

Nevat said...

RPM packages for openSUSE 12.1, 12.2 & 12.3

https://build.opensuse.org/package/show?package=cannonball&project=home%3Advlara

yt said...

Nevat: Thanks for that. Added to the page :)

MrThunderwing said...

This is such an awesome program. Thanks you so much for making it! Just got the accelerator and brakes axis correctly configures for my Thrustmaster Ferrari GT experience wheel. It doesn't support FFB, but with the haptic enabled option on it rumbles nicely when I'm going around corners.

El Nerf said...

Hello! i really like this proggy!

Ema said...

Can you make also Cruis'n USA and World from the original arcade please? With mame the emulation is very very slow, maybe you can fix also the controller for choose the track without problems. Please...

El Nerf said...

HAHA i doubt it!

Ema said...

Why? Outrun have a porting for PS2 and I think that is fine, the porting for the Nintendo 64 of Cruis'n USA and World are very bad, with the right emulator (like this) I think that can be possible a cool emulation of that wonderful games.

Hegedűs Ervin said...

But this is a simulator not emulator, you can't understand the mission... plus the games what youm mention written for 3d engine even in consoles and arcades.

Michel said...

Excellent work! These improvements to the original game are really impressive.
I suggest add an on-screen indication to the car's gear (high or low). Optional use, of course.

yt said...

Michel, there's one already :)

Tetrafish said...

I came to see if there were any updates, noticed the new graphic 'Canon Ball'. Uhm... Could you perhaps put a date somewhere with the description? Like; Latest update on XX/XX/XX, version XX. One on the site, and one somewhere in the game? I know I can check the folder name, but I'm thinking of something more... (haha) lazy? :-p

yt said...

All updates are posted on the main blog so check that out.

Tetrafish said...

I guess I should say - if/when you have another update. No reason to update just for date and version numbers. I guess.

Michel said...

@yt:
I had not noticed before - a nice touch. I'm used to that "big arrow" when playing in MAME.

Unknown said...

Nice work!!!

http://www.youtube.com/watch?v=uGEWzkSRvDw