A marble shooter for the Game Boy Advance, in the style of Zuma.
![]() |
![]() |
![]() |
![]() |
Made with AI: this game was built with Claude, Anthropic's AI model, using Claude Code. The code, artwork, music and documentation were written by Claude, directed and playtested by @hjcoggan. See AI disclosure below.
Download zoomer-gba.gba from the
latest release and open
it in any GBA emulator (mGBA is recommended) or on a flash
cart. No building needed.
You need devkitPro's GBA toolchain, make and git.
Python 3 is only needed if you change the artwork (make assets).
-
Download and run the devkitPro pacman installer (
.pkg) from https://github.com/devkitPro/pacman/releases, then install the GBA tools:sudo dkp-pacman -S gba-dev
-
Add the toolchain to your shell (append to
~/.zshrc, thensource ~/.zshrc):export DEVKITPRO=/opt/devkitpro export DEVKITARM=$DEVKITPRO/devkitARM export PATH=$DEVKITPRO/tools/bin:$DEVKITARM/bin:$PATH
-
Install mGBA:
brew install --cask mgba -
Build and run:
git clone https://github.com/hjcoggan/zoomer-gba.git ~/zoomer-gba cd ~/zoomer-gba make open -a mGBA zoomer-gba.gba
-
Download the graphical installer (
devkitProUpdater) from https://github.com/devkitPro/installer/releases and run it. When it asks which components to install, tick GBA Development. It installs toC:\devkitProand sets theDEVKITPRO/DEVKITARMvariables for you. -
Open MSYS2 from the devkitPro folder in the Start menu (a bash shell that comes with devkitPro, with
makeandgit) and build:git clone https://github.com/hjcoggan/zoomer-gba.git cd zoomer-gba makeIf
gitis missing, install it withpacman -S git. -
Install mGBA from https://mgba.io/downloads.html and open
zoomer-gba.gbawith it (or drag the file onto the mGBA window).
-
Install devkitPro pacman. On Debian, Ubuntu and derivatives:
wget https://apt.devkitpro.org/install-devkitpro-pacman chmod +x ./install-devkitpro-pacman sudo ./install-devkitpro-pacman
On Arch and other distros, follow https://devkitpro.org/wiki/devkitPro_pacman.
-
Install the GBA tools, then log out and back in (or run
source /etc/profile.d/devkit-env.sh) so the environment variables are set:sudo dkp-pacman -S gba-dev
On Arch-based systems the command is
sudo pacman -S gba-devafter adding the devkitPro repositories. -
Install mGBA:
sudo apt install mgba-qt, or from Flathub withflatpak install flathub io.mgba.mGBA. -
Build and run:
git clone https://github.com/hjcoggan/zoomer-gba.git cd zoomer-gba make mgba-qt zoomer-gba.gba
The ball-chain logic has host-side tests that build with your normal C compiler:
make test- Adventure - six track layouts and five Aztec themes (jungle, temple, night, volcano, jade); the combination changes every level and only repeats after 30 levels.
- Endless - the classic spiral track with a random theme and a chain that never stops; it speeds up every 15 seconds and adds a fifth color after 90 seconds.
High scores and settings are saved to cartridge SRAM (a .sav file in
emulators).
| Button | Action |
|---|---|
| Left / Right | Spin the frog quickly |
| L / R | Aim the frog (fine) |
| A | Shoot |
| B | Swap current and next ball |
| Start | Pause menu |
The aim and shoot/swap buttons can be swapped in Settings (main menu or pause menu).
source/main.c Game loop, input, rendering (sprites + tile backgrounds)
source/chain.c Ball chain logic: spawning, pushing, matching, roll-back combos
source/sound.c Music and sound effects on the GBA's PSG channels
source/ui.c Text, panels and menus
source/save.c High scores and settings in SRAM
source/assets*.c Generated: track layouts, level images, palettes, tiles, font
include/ Headers (gba.h has the hardware registers)
tools/gen_assets.py Defines the track layouts and draws all artwork, writing
assets*.c/assets.h plus build/preview_*.png
tests/ Host-side tests for the chain logic
There are five songs, one per level theme (endless mode picks one at random).
They are written as note names in the songs table in source/sound.c, so
they are easy to edit.
No libraries are needed beyond devkitARM. After editing the artwork or track in
tools/gen_assets.py, run make assets. Run the logic tests with make test.
Nearly everything in this repository was generated by Claude (Anthropic) in
Claude Code sessions: the C source, the build setup, the tests, the procedural
artwork generator, the music and sound effects, and this README. A human chose
the features, played the builds and reported what to change. Commits written
this way carry a Co-Authored-By: Claude trailer.
The code has host-side tests for the ball-chain logic and has been played in the mGBA emulator, but it has not been reviewed line by line by a person, so expect rough edges. Bug reports and pull requests are welcome.
MIT - do whatever you like with it. All code, art and music in this
repo is original; the artwork is generated by tools/gen_assets.py.
This is an unofficial fan project inspired by PopCap's Zuma. It is not affiliated with or endorsed by PopCap Games or Electronic Arts.





0 comments
log in to comment.