Skip to content

v2.0.0 — one Arduino library, renamed Adafruit Arcade Machines

Choose a tag to compare

@jedgarpark jedgarpark released this 08 Sep 17:31
· 13 commits to main since this release
9480ee9

A packaging release. The firmware is unchanged from v1.2.0 — six of the seven .uf2 files are byte-identical in size to the v1.2.0 assets, and dkong_fruitjam is 512 bytes smaller (one UF2 block, from shorter __FILE__ paths after the source moved). No new games, no gameplay or timing changes. If v1.2.0 is running well for you, there is nothing here you need.

What changed is how the project is packaged, in response to a review of the old layout.

It is now one Arduino library

The repo used to be an Arduino sketchbook — 13 top-level sketch folders, and an install step telling you to point Preferences → Sketchbook location at the checkout. That could not be installed, could not go to Library Manager, and never appeared under File → Examples.

src/Adafruit_Arcade_Machines.h    umbrella header
src/hal/  src/cpu/  src/machines/  src/boards/
examples/Games/       the seven games
examples/SelfTest/    per-subsystem bring-up sketches
extras/               development notes, host harnesses, release staging

Install it like any other library and open File → Examples → Adafruit Arcade Machines → Games. Its one dependency, PicoDVI - Adafruit Fork, is declared in library.properties and Library Manager pulls it in for you — along with the eleven libraries it depends on in turn.

Renamed

The repo and the library are now Adafruit Arcade Machines (adafruit/Adafruit_Arcade_Machines). The old URL redirects. #include <ArcadeArduino.h> is now #include <Adafruit_Arcade_Machines.h> — the reason this is 2.0.0 rather than 1.3.0, since it breaks anything that included the old header. The C API underneath (hal_*, arcade_hal_*) is untouched.

Upgrading from an earlier checkout

Reset Preferences → Sketchbook location to your normal sketchbook. Leaving it pointed at this repo now produces fatal error: Adafruit_Arcade_Machines.h: No such file or directory, because the repo is the library and cannot live inside its own libraries/ folder. The README covers this at the install step, along with a symlink workflow for editing a checkout in place.

Also in this release

  • A build-time guard for the optimisation level. At the core's default -Os every game here overruns the 16.66 ms frame budget and the screen goes solid red — which looks exactly like a missing SD card and has cost real debugging time. Building at -Os now fails with an explanatory error instead. Set Tools → Optimize to -O2 or -O3; each example says which it needs.
  • PORTING.md — the method behind seven ports, the traps ranked by how much time they actually cost, and a section on adding a new board.
  • The i8080 core takes its port I/O through per-instance callbacks, matching the Z80, 6502 and MCS-48 cores. This is what let all seven machines coexist in one library.
  • 13 broken symlinks that had been committed into libraries/ are gone.

Verified

All seven games flashed and confirmed on real Fruit Jam hardware after the restructure — Donkey Kong, Pac-Man, Ms. Pac-Man and Galaga in all four screen rotations, with zero DVI starvation. RAM usage is byte-identical to before the restructure on all 13 examples. arduino-lint --library-manager submit reports 0 errors.

Flashing

Hold BOOT while connecting USB (or hold BOOT and tap RESET), then copy the .uf2 onto the RP2350 drive. The binaries contain no ROM data — you still need a microSD card with legally-obtained ROMs, laid out as each game's README describes.