Nintendo Gameboy Advance software  

I hack about with building things for my Gameboy Advance. Here's a set of the more interesting things I've built so far. Click on the purple GBA icon to download the .gba file!

[Santa] A simple game written to match the strict rules of the March 2007 compo -- to emulate the style and gameplay of the classic LCD "Game and Watch" games of the '80s. It's a Skeet shooting game, inspired by Konami's "Hypersports". Gameplay is nice and simple, requiring just two buttons.
[Santa] After really enjoying producing last years winning entry for the DrunkenCoders compo, we had to try bettering ourselves for the 2006 Compo. This is a reasonably involved little production. Still fits in that golden 256K so you can put it on hardware without requiring a flash card (ace for testing!). As usual, all custom drawn graphics and original code, but I'm also really pleased that we've got the 3rd member of Paradise back in to the fold to produce a funky wee tune for the game too! This is all using 16 colour tiles, with some amusing DMA-driven water movement, palette cycling over 5 palettes for the menu effect, lots of hardware-pushing alphablending, scaling and rotating. This didn't seem to please the judges as much as last year's entry - we came 6th.

(Oh yeah, you may have noticed it plays with your GBA held sideways!)

[Santa] My first fully finished GBA game, written in a big hurry (8 days!) for the Drunken Coders Xmas 2005 compo, where it won first prize!

Still using ye olde RISC OS palette for some reason, but with a variety of new things I've not used on GBA before, such as hardware scaling, DIY 8bit plotters from 4bit data, sub-song music and just about all 128 hardware sprites in use! The game itself is pretty straightforward as I really didn't have time to get anything more involved working (what a time to run a compo, right over xmas day!). Pretty pleased with the result!

[Chopper] More testing of stuff. More graphics from never-finished RISC OS games! The first try at having BG's overlaying the sprites (you can fly behind the building). All four possible hardware BG layers are used here (256 colours) and hardware sprites (16 colours). There's not enough RAM to hold all the sprites I want (lots of animation frames in that there chopper) so each time the chopper changes direction/state, I DMA a load more graphics in from the ROM... it really made me worry about how little graphics RAM there is on a GBA! It's not much fun to play yet - I kinda got bored once the basics were proved to work. This is also an attempt at multiplayer stuff -- the whole thing seems unreliable though.
[Chrome] This was my first real playable game (woo!) -- graphics were originally done for a micro-machines clone I planned but never wrote for RISC OS. This version takes the rip a bit by rotating the map under the car, as well as the car itself. Mainly done as a test of map and hardware sprite control.
[BurnOut] Burn 'Out tribute - graphics, photos and music from my RISC OS buggy racing game, Burn 'Out. This tests changing mode (8bit and 16bit used) and the music player.
[Cybernoid] A simple parallax scrolling test, using graphics from a never-got-released RISC OS game that I was developing.

Tools used to develop these games:

For emulation of the GameBoy Advance itself, unquestionably the best emulator is VisualBoy Advance -- definitely the most accurate emulation of the GBA hardware. A very close second is No$gba which has some nice features, but doesn't emulate the restrictions of the graphics hardware so well. The author of No$gba also produces a Debugger for GBA, which is tremendously useful and very cheap for hobbyist use. Finally, I love to play GBA games on my PSP, simply for the loud sound and huge screen - gpSP is best.

I write C code. May I recommend TextPad as a decent multipurpose editor. Compiling with a rather old variant of DevKitAdvance although I've also tried DevKitARM. Generally build code in thumb mode to save some space. Often squeeze space by LZ77 compressing things in the ROM (GBA BIOS has handy de-LZ77 code) and use GBACrusher to compress. I use gbafix to calculate the final CRCs and ROM headers.

Graphics. Generally provided for me by other members of Paradise, however I use Microsoft Office Photo Editor (don't laugh, it does its wee job well) and Adobe Photoshop for cutting things up and editing palettes etc. although it's really not that amazing as a pixel editor. (Ever tried merging two palettes with Photoshop? Don't.) I generally run with PNGs these days and now use my own custom tools for conversion to GBA format - I might release these eventually. I've used tools such as gfx2gba in the past.

For audio, ModPlugTracker wins. I use the free Krawall music player which accepts .s3m files straight from ModPlugTracker and can also be used to play ingame SFX. Superb. Sample editing is generally done with Nero's WaveEditor simply because Nero is such a superb set of well featured tools for the price.

For our Santa's Skidoo Scarper game, for the first time ever, I've "properly" used a 3rd party map editor (I usually write my own for all RISC OS stuff). Mappy is a generic tile map editor, but definitely has a GBA focus. It's got some idiosyncrasies to be worked around, but saved us a heap of time with the Skidoo game and produced output in a format we could use directly (although in the end, I postprocessed the output quite a lot with some perl to save space!). The "Pro" version is recommended (small donation) as it also allows object-layer editing.

Inspiration for games? Anything for console or in arcades in the '80s.

Tutorials. I've used plenty of these! is the place to go for stuff in my experience. Lots of tutorials and example sources to play with there. And one set of tutorials which I've found amazingly well written and useful, although I only found it recently, is TONC. The one and only reference I need for the whole GBA spec, is thanks to No$gba again - available here.