v2.0.0 — one Arduino library, renamed Adafruit Arcade Machines
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
-Osevery 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-Osnow fails with an explanatory error instead. Set Tools → Optimize to-O2or-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.