A port of Moon Miner by Dan Cogliano (GPL-3.0) to the picogame engine. Adafruit Fruit Jam, 640x480 — the original's missions, physics, art and sounds, unchanged.
The port was made to test the picogame engine on a complete, real game: what a
faithful 1:1 port looks like, which engine features carry it, and whether
anything essential is missing. The source keeps the structure of the original
code.py, and short ORIGINAL: comments mark the places where the engine
changed the approach — so the two files can be read side by side.
- Flash a Fruit Jam picogame firmware (CircuitPython with the engine built in): https://picogame.makerclass.cz/firmware/
- Copy the contents of this repo onto the
CIRCUITPYdrive (code.py,settings.toml,art/,assets/,missions/,lib/).settings.tomlselects the 640x480x8 display mode and routes audio to the speaker. - Reset. Controls: A = thrust, LEFT/RIGHT = rotate, START = pause, SELECT = quit. A USB gamepad or keyboard also works (arrows/WASD = D-pad, Z/Space = A).
lib/ contains the picogame helper libraries as precompiled .mpy
(from picogame-libs).
- The scene and all sprites are created once at startup; a mission start
only re-fills fixed pixel buffers. (The original rebuilt its display
groups per mission and used
gc.disable()to mask the allocation cost.) - The title and help screens are streamed from flash by
picogame_cutsceneinstead of being held in RAM. - HUD labels compose glyphs into fixed buffers in place, so the game loop does not allocate; no garbage-collector tuning was needed.
- Best times are stored in NVM (
picogame_save), which works even when the CIRCUITPY filesystem is read-only to code. - All input arrives through one logical button mask (board buttons, USB gamepad, USB keyboard); prompts are level-triggered so simple gamepads that stretch button presses behave correctly.
- The rotation animation keeps the original's pre-rendered 15-degree frames.
(The engine could rotate a single drawn frame at runtime instead —
Sprite.angle— but there was no reason to replace working assets.) - The port runs several times faster than the original, mostly due to the
engine's dirty-rectangle rendering; the mission files in
missions/*/data.jsonare the original's and stay easy to edit.
GPL-3.0, like the original — see LICENSE. Game design, missions, art and sounds are Dan Cogliano's work (converted to raw formats, not redrawn). The picogame engine and helper libraries are MIT-licensed separately.