Skip to content

About

Moon Miner by Dan Cogliano ported to the picogame engine (Adafruit Fruit Jam, 640x480) - annotated as a worked engine example

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Moon Miner — picogame port

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.

Running it

  1. Flash a Fruit Jam picogame firmware (CircuitPython with the engine built in): https://picogame.makerclass.cz/firmware/
  2. Copy the contents of this repo onto the CIRCUITPY drive (code.py, settings.toml, art/, assets/, missions/, lib/). settings.toml selects the 640x480x8 display mode and routes audio to the speaker.
  3. 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).

Notes from the port

  • 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_cutscene instead 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.json are the original's and stay easy to edit.

License

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.

About

Moon Miner by Dan Cogliano ported to the picogame engine (Adafruit Fruit Jam, 640x480) - annotated as a worked engine example

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages