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


rc55 said...


Using the latest Mingw build I noticed that when starting the emulator and choosing Magical Sound Shower the music sounds a bit wrong. The only thing I had done was enable widescreen mode in the config.

Here are examples of the bug:

Hope this helps!


yt said...

Those links don't work...

rc55 said...

Try again now (sorry!)

yt said...

That's weird. What's your audio setup?

Maybe try the Visual Studio build when I upload it later and see if that fixes your problem.

The build itself works on my crappy work PC, so could be an audio driver thing? I haven't changed any audio code in this latest release...

yt said...

Hmm.. just reproduced it. Will investigate later!

yt said...

I'll have to investigate that one further - everything runs fine when compiled with Visual C++.

I've updated the build and removed the MinGW build for now...

Sparky Kestrel said...

I just found out about this site earlier today (followed a link from the Pandora version on the OpenPandora forum, will try out the Pandora version later too).

I just downloaded and tried out the PC version of Cannonball in widescreen, and can I just say it is AWESOME! The game is just so much better to play like this, as if it was always meant to be playhed this way. The 60fps update works wonders for it too.

Two things I hope will be included in a future release:

1. Analog control support. I play Outrun in MAME using a Xbox360 controller, and the precise control from the analog stick makes it great to play. I notice you have tried to simulate this to some extent in your conversion, but it just isn't the same as playing with proper precise analog control.

2. Highscore saving. This was in MAME until v.107 but was removed. It would be nice if highscores are saved so that next time I play all the previous highscores are still there.

yt said...

Hi Adam,

Thanks for the kind comments! Glad you liked the widescreen support - it genuinely feels better doesn't it?

High Score support: definitely in the pipeline along with the config saving.

Xbox controller: This is on my radar. I just need to get an analog controller to test with... either I'll buy one, or someone can donate me one if they want it done faster :)

yt said...

rc55: I believe I have (finally) tracked down and fixed the issue you were referring to. Quite an odd one.

Details here:

ptitSeb said...


I have compiled the new version of Cannonball, and will update very soon the OpenPandore Repo.
I put back some of my optims (I'm not entirely sure they are faster), and after some try of optimization flags, I can now have a full speed experience, full widescreen, and at 60 fps (just some few rare slowdown) !!!
And that is very enjoyable !
My OpenPandora is running at 1GHz, so I will left the default at 30 fps. I'll put clear info on the site on how to play with the various parameters of the config.xml

Good work ! Can't wait the hiscore saving :-) (and analog, even if the current controls works very well).

yt said...

Excellent. What would be really useful for more documentation is details on the compilation flags and options you used. This will help others porting to portable devices with less processing power.

The hi-score saving is already in the develop branch. It saves to an XML file. So you can even edit the scores if you want to cheat by hand.

I'll merge them into the master branch after a bit more testing and so forth.

ptitSeb said...

The compiler flags where "-O2 -mcpu=cortex-a8 -mfpu=neon -ffast-math -ftree-vectorize -pipe"

But other optimization are more Pandora exclusive. There is SDL driver specifics to the Pandora, with scaling optimized. On the launch, I carefully choose the framebuffer dimension that is 2* time the rendered screen (640x448 or 798x448). I think that help too, as the scalling is just *2.

ptitSeb said...

(typo, it's 796x448)