Overview
Pew pew! 👾 Do you wanna play a game of pixel-accurate Space Invaders 🛸, even when you can't remember where you put your original 1978 Taito or Midway arcade cabinet. Or maybe Mr. or Ms. Pac-Man 🍒 is more your speed? Heck yesh! Donkey Kong 🦍? Check. Galaga ✨? YES! How about some 🍔 Burger Time 🍟? Totally!! Lunar Rescue 🌕 perhaps? LET'S DO THIS!!!
What about a dedicated Game Boy or Nintendo Entertainment System (NES) with microSD card cartridges?
Rather than running them on the Intel 8080- or Zilog Z80- or MOS 6502-based arcade PCBs, these are native Arduino ports for the Fruit Jam on an RP2350 chip, which loads your original game ROMs from a microSD card at boot. The DVI video and audio are output over HDMI cable (with included I2S audio over the headphone jack). You can use directly wired arcade buttons as input or a USB gamepad.
This single arcade machine port architecture is in contrast to the MAME (Multiple Arcade Machine Emulator) concept in a couple of key ways. One, it runs on a microcontroller instead of a computer + operating system, so your game boots up instantly and requires no fiddling around and associated overhead. And two, you get one game, and one game only at a time to play on your machine so you can stop rage-quitting and launching something else!
These ports have a few extra tricks up their sleeve, too -- press the Fruit Jam's Button #2 to rotate the video output to any of the four orientations for play in landscape or more accurate portrait (tate mode). Press Button #1 to adjust the aspect ratio to better suit your display. And for even more authentic arcade-style action for Space Invaders in particular, press the Fruit Jam's Button #3 to flip the video signal to mirror mode for use with a Pepper's Ghost effect-inducing piece of one-way mirror glass.
Architecture
This project's goal is to offer a simple, accurate, and extensible platform on which to recreate and play classic arcade game machines from the 1970s and 80s on inexpensive modern hardware. To achieve this, the architecture is a three-layer stack of hardware emulation/modeling and a Hardware Abstraction Layer (HAL) connecting those to the actual hardware you're running today, such as the Fruit Jam:
- CPU cores: an emulation of the original machine's processors. Each core models one chip. It doesn't know which game it's running or what it's running on
- Machine Layer: an model of the original game machine hardware layout -- which CPU cores it uses, its memory map, ROM set, tile/sprite video, and sound chips. It describes the vintage hardware in the abstract, producing pixels, audio, and input requests without any knowledge of today's hardware
- Board Layer: the hardware running on today to read ROMs from SD card, read GPIO pin button input to send to the Machine Layer, and pipe out the pixels and sound coming from the Machine Layer to your display and speakers
This means games are described independently of the hardware they ran on, and the original hardware is implemented independently of the target hardware you're running today. So, you could, for example, write one new board implementation to run everything on a different microcontroller platform without touching the rest of the code. Or, add new vintage CPU cores and games to run on the current hardware.
Credits:
- Original Space Invaders emulator: shotto42/invaders
- 8080 CPU core: intarga/i8080e (MIT)
- Z80 CPU core: superzazu/z80 (MIT)
-
6502 CPU core (
ArcadeCPU_M6502): superzazu/6502 (MIT) -
MCS-48 CPU core (
ArcadeCPU_MCS48): ported from MAME'smcs48_cpu_device(src/devices/cpu/mcs48/mcs48.cpp) — BSD-3-Clause, copyright Dan Boris, Mirko Buffoni, Aaron Giles, Couriersud. - I2S PIO program: pico-infoNES
- SD card SPI driver and FatFs integration: wili8jam (MIT)
- FatFs: ChaN (FatFs license)
- Emulating Space Invaders Look and Feel: Tvil
Laminated Reproduction Overlay
You can order a reproduction laminated control panel overlay from many shops online (check eBay as well). This one pictured is from Arcade Marquee.
Look for one with sticky backed vinyl. In most cases there are registration marks for guiding you in cutting your own 30mm holes for the five buttons.
Page last edited October 05, 2026
Text editor powered by tinymce.