Pin Eight Home

Game Boy Advance Software

Looking for commercial gameboy ROMs for visualboy? Go somewhere else, you dirty pirate.

Still here? I'm just a lowly homebrew GBA developer, but here's what I've released so far:

Documents

If you want to take up GBA development yourself, read the documents on gbadev.org and devrs.com. Then read the following:

Online tools

  • Sample rate calculator: Finds all PCM sample playback rates that play nice with the GBA's vertical scan frequency (requires ECMAScript and HTML DOM; works in at least IE 6 and Mozilla)

Programs

All programs include full source code under a free software license unless otherwise specified. All programs have been tested on GBA hardware; those compatible with the VisualBoyAdvance emulator have been tested on it as well. To use GBA programs on hardware, you can use the Xboo cable or any of various GBA flash cards including the GBA Movie Player. (Look through various online retailers.) None of these programs contains any Nintendo copyrighted code except for logo code required to get the GBA to start and used fairly under the Sega v. Accolade precedent.

To compile these programs, you may have to have both a native GCC and devkitARM installed, as these distributions include the source code for data conversion tools but may lack binaries. Some of the conversion tools may require the Allegro library, which is mirrored in the PC section.

Luminesweeper

It's Lumines. It's Minesweeper. It's both. And you don't need a PSP.

Learn more

Speed tester for libfat

This program tests how fast data can be read from the CompactFlash or Secure Digital card inserted into a GBA or DS through an adapter. It works on any adapter supported by libfat, including those with GBA-compatible DLDI drivers.

  • 2007-08-06: run all tests on one screen, use more precise timing, detect and report broken drivers
  • 2007-08-05: DS support
  • 2007-08-04: switch from gba_nds_fat to libfat

Download speed tester for libfat (99 KB; includes source code, GBA binary, DS binary, and required test file)

Stuck Pixel Fixer

If your GBA's display has pixels that are stuck lit or stuck dark, this program may be able to coax them into working again. It also works on LCD TVs through a GameCube and Game Boy Player.

Health Warning: This program works by rapidly cycling the color of the screen. It may trigger seizures in people sensitive to flashing lights. If you have a seizure disorder, make sure to turn over your GBA or close your GBA SP or Nintendo DS when prompted to do so. If you are using a Game Boy Player and you are photosensitive, have somebody else run the program for you. See your health care professional for more information on photosensitive epilepsy.

Download Stuck Pixel Fixer (25 KB; includes source code and GBA binary)

Controller and DK Bongos Test

Controller and DK Bongos Test screen shot

A DK Bongos controller plugged into a GameCube shows up as a controller in many GameCube games. Each of the bongos has two sensors, one in the top half (viewed from above) one in the bottom half. The left bongo presses Y (top) and B (bottom), the right bongo presses X (top) and A (bottom), the clap sensor presses R, and I'll let you guess about Start/Pause :)

This program, designed to be run in Game Boy Player, demonstrates reading a standard controller and a DK Bongos controller. (There is one drawback: the Game Boy Player's controller reading code has a pretty high threshold for what counts as a press of the R button, and clapping loud enough to trigger it may hurt your hands.) This package also includes a version of AGBTTY updated to work with devkitARM.

Download Controller and DK Bongos Test (23 KB; includes source code and GBA binary)

GSM Player

I've ported the GSM RPE-LTP codec, which has been used in mobile phones, to the GBA. Now you can use your GBA as a portable music player, with up to 150 minutes of music on a 256 Mbit flash cart. (This program is not designed for multiboot.)

Learn more

8ad codec

8ad screen shot

Audio is big. GBA carts can be as small as four megabytes. If you want to include a lot of audio on a cart, you're going to have to compress it. Here's a tool that compresses audio to 4 bits per sample using ADPCM techniques and provides for real-time playback of monaural audio using 6 percent of the GBA's CPU time. (This program is not designed for multiboot.)

If you're having problems compiling it, please read the instructions in readme.txt.

Download 8ad source code (187 KB)

The 8ad binary demo is no longer available as of February 14, 2005.

AGBTTY

AGBTTY screen shot

AGBTTY fills in a gap in the available development tools by providing a reasonably familiar text output interface that can implement write() to stdout. It handles all control characters defined by the C language, and it has a scrollback buffer.

This works fine in (outdated) DevKit Advance R5 beta 3 but has not yet been updated to work with devkitARM. You might want to follow these instructions to get it working, or try the newer version in the bongos test.

Download AGBTTY (28 KB; includes source code and GBA binary)

Vitamins

Vitamins gameplay screen shot

Vitamins is a falling pills game. The object is to move and rotate falling pills in line with like-colored space invaders to eliminate them. Though this is an early alpha release of Vitamins, with less than fully detailed graphics, no sound, and several options missing, let this go on record as the first native game with rules similar to Dr. Mario on the GBA platform and the smallest such game (an 18 KB binary) on any Nintendo platform.

Download Vitamins Milestone 1 (45 KB; includes source code and GBA binary; requires GBFS tools to build)

Multiboot menu

Multiboot menu screen shot

This program lets you put several GBA multiboot (.mb) programs into one ROM for use on a flash cartridge, etc. Because it uses the GBFS library to locate the programs, the programs can be any size, up to 256 KB (the maximum size of a .mb program).

It includes an 8x8 pixel monospace bitmap font designed to look slightly "cutesy" like hand printing. It's based loosely on fonts such as Ziggy Zoe, Kristen, and the font used on the boxes of Precious Moments® merchandise. You may use this font freely in your own projects.

Download Multiboot Menu (48 KB; includes source code, binary, and a DOS/Windows shell script to make a ROM from several .mb programs)

GBFS

rolling credits

GBFS is an alternative to the hassle of the various "incbin" hacks (such as bin2h, b2x, objcopyroda/interflip, etc.) used to put binary data (such as graphics, text, maps, and sounds) into a Game Boy Advance or Nintendo DS program. It also has the advantage that artists and musicians will be able to see the effects of revisions to their work immediately on the emulator without having to recompile the program. It's analogous to the "appended datafile" method used in some PC games, especially those that use the Allegro library.

Use the included tools to put all your media into a GBFS file (an archive similar to a zip file but not compressed) and simply concatenate the program binary to the GBFS file containing the data. Then use the library to find binary objects by name.

TIP: If you have received a GBA or Nintendo DS program that contains the string "PinEightGBFS"), then it uses the GBFS library. Make a copy of all data starting at the "PinEightGBFS", and use the ungbfs program included with the GBFS distribution.

A demonstration program is included that rolls credits based on a font and text file both stored in a GBFS file. Feel free to borrow this code for your game's end credits.

Release 20060815 updates the sample program's build script for devkitARM R19b, increases the number of files that can be put into a GBFS archive, and adds notes in the manual about issues related to the Nintendo DS.

Download GBFS distribution (77 KB)

freemirror

freemirror

freemirror displays an image of up to 256 colors on a Game Boy Advance system. You can use this to test mock-ups of your screen layout to make sure that they work well with the size and gamma properties of the GBA display hardware. Then it turns the display black so that you can use its scratch shield as a makeshift mirror.

Download GBA freemirror release 20020119 (35 KB)

Static images

[Gamma screenshot] [6 pixel tile screenshot]

Four simple graphics demos.

  • Shows that the GBA's dark display has a γ (gamma) value of 3 to 4, unlike CRT displays that have a γ of 2.2. Use this fact to gamma-correct your graphics. (The GBA SP display is similar to that of a GBA; colors on the Game Boy Player and the Nintendo DS tend to match those seen in PC based emulators.)
  • Shows one way to use GBA's affine capability to draw 6-pixel wide tiles and create an effective tile size between 8 and 16 pixels wide, useful for puzzle games.
  • Turns your GBA's display into a mirror. (Same as freemirror but without the bitmap display.)
  • Proves that the GBA display is interlaced the same way as the GBC display, with alternate lines being drawn darker and lighter in each frame. This fact could prove useful for advanced "cheating" techniques to improve fill rate for software rendering engines already running at 30fps, as seen in "fr018: aGb".

Download GBA static images demo (27 KB)

Sections

2000–2012 Damian Yerrick. Some rights reserved: except where otherwise indicated, this site is free content, licensed under your choice of Creative Commons Attribution-ShareAlike 2.5 or GNU Free Documentation License 1.2. Terms apply.