This repo contains a port of the Ballistica game engine to the Nintendo 3DS platform.
This game was originally developed by Stephen Eddy for the IBM PC with VGA in 1994. The 3DS version is a port of the original DOS codebase, with some enhancements and modifications to work on the 3DS hardware.
It makes use of both 3DS screens and the 3DS controls. It contains a full level editor, so you can create your own levels and play them on the 3DS.
|
Main Menu |
Gameplay |
|
Level Editor |
More Gameplay |
You can download the latest release build from the Releases section of this repository. Look for a file named ballistica.3dsx. Copy this file to the /3ds/ballistica folder of your 3DS SD card and run it using the homebrew launcher.
The game uses the following controls:
- Stylus - Move the paddle, select menu items, draw in the level editor
- D-Pad Up - Launch ball (when in play mode), Fire Laser (when collected)
- D-Pad Down - Activate Tilt (when indicator is shown)
If the game detects a ball may be stuck, it will flash up the Tilt indicator. Press D-Pad Down to activate the tilt and free the ball.
The levels are stored in the levels folder. You can create your own levels using the in-game level editor, or by editing the text files directly, then copying the .DAT files from the /ballistica/levels folder on your 3DS SD card to your computer.
I encourage you to create your own levels and share them with others, by raising a PR against this repository with a description of your levels.
If this repo is useful to you, please consider starring it to help others find it and tell your friends about the game.
You can build the CIA locally to iterate on assets/cia/cia.rsf without waiting for the release pipeline.
Prerequisites:
- devkitPro / devkitARM installed (environment variables
DEVKITPROandDEVKITARMset or available via your shell profile) so thatmakeproducesBallistica.3dsx/Ballistica.elf. - Platform tools included in this repo:
- macOS (Apple Silicon):
bin/mac-arm64/bannertool,bin/mac-arm64/makerom - macOS (Intel / Rosetta):
bin/mac-x86_64/bannertool,bin/mac-x86_64/makerom - Linux (x86_64):
bin/linux-x86_64/bannertool,bin/linux-x86_64/makerom
- macOS (Apple Silicon):
- Assets present:
assets/cia/icon.pngassets/cia/banner.pngassets/cia/banner.wav(e.g. generated with:ffmpeg -i music.wav -ss 0 -t 3 -ar 32000 -ac 2 -acodec pcm_s16le banner.wav)assets/cia/cia.rsf
Run:
chmod +x scripts/build_cia_local.sh
./scripts/build_cia_local.shArtifacts will appear in dist/ (Ballistica.cia, plus banner.bnr and Ballistica.smdh).
If makerom fails with an ExHeader save size error, the script auto-retries by injecting a small SaveDataSize (256KB) into a temporary RSF so you can decide whether to add it permanently.
Current UniqueId in cia.rsf is a placeholder (0x12345). Replace with a stable unique value before public distribution to avoid collisions with other homebrew titles installed on the same system.