v1.2.0 — all four screen rotations, with aspect-ratio correction
All seven games now run clean in all four screen rotations, with optional aspect-ratio correction — verified on physical Fruit Jam hardware, in gameplay rather than attract mode, game by game.
No new games since v1.1.0. This release is the display work: the red lines are gone in every orientation, and the picture can now be shown in the 4:3 proportion these cabinets actually used.
Flashing
Hold BOOT while connecting USB (or hold BOOT and tap RESET), then copy the .uf2 onto the RP2350 drive that appears.
The binaries contain no ROM data — you still need a microSD card with legally-obtained ROMs, laid out as each game's README describes.
Display controls
Three front-panel buttons, the same on every game:
| Button | |
|---|---|
| 1 | Aspect-ratio correction on/off |
| 2 | Cycle rotation (upright / 90° CCW "tate" / 180° / 90° CW) |
| 3 | Horizontal mirror (for Pepper's-Ghost cabinets) |
Button 1 depends on your monitor, not on the game. These cabinets had 4:3 tubes, so a correct picture fills the screen in that proportion. A 16:9 panel rotated for tate already stretches the image on its own and the correction would over-correct it; a wide panel forced to 4:3, or a genuine 4:3 panel, needs it. Try both and keep what looks right.
It is off by default, except Pac-Man and Ms. Pac-Man whose raster is already close to 4:3.
Known exception: Galaga does not apply the correction in landscape — it is the most expensive machine here (three Z80s) and the correction costs more than the frame budget allows, so its landscape stays at the 1:1 layout and Button 1 does nothing in rotations 0 and 2.
None of the three settings survives a power cycle yet. Persisting them is planned; see DISPLAY_GEOMETRY.md section 8.
What changed under the hood
- One coordinate space for every renderer — the canvas is 320×240 square logical pixels, not 640×480
- A shared geometry module replacing 32 hand-derived rotation cases across seven renderers
- Scanline queue raised from 8 buffers to 32, which removed the last of the starvation
- A wide-store emit that made the aspect correction affordable (1,712 µs → 66 µs on Burger Time)
- Column renderers for Donkey Kong (also freeing 94 KB of SRAM), Pac-Man, Ms. Pac-Man, Galaga and Burger Time
- Merged downsampling for Space Invaders and Lunar Rescue, whose landscape text was losing whole letter strokes
DISPLAY_GEOMETRY.md has the derivation and the per-game measurements; DEVNOTES.md #75–#101 has the full account, including the wrong turns.
Verified
REUSE compliant (198/198 files), tools/geom_test passing, all seven sketches and all six host harnesses building, and every game flashed and played in all four rotations.