No hace falta una sala de máquinas ni un mueble de 150 kilos en el living para jugar el Space Invaders de 1978 tal como salía en el fierro original. Tampoco hace falta un PC con MAME encima. Lo que este proyecto demuestra es que un microcontrolador de menos de 40 dólares alcanza y sobra para reproducir, ciclo a ciclo, el hardware completo de una máquina arcade de los años 70 y 80: la CPU, el mapa de memoria, el chip de video y la lectura de botones.
Al terminar de leer vas a saber cómo está construido un port de arcade sobre un RP2350, cómo se prepara la microSD con las ROMs para que la máquina arranque, cómo se diagnostica un arranque fallido con solo mirar el color de la pantalla, y qué necesitas para armar el panel de control con botones y joystick reales.
Por qué un microcontrolador y no un PC con emulador
La diferencia entre esto y MAME no es de potencia, es de arquitectura, y vale la pena entenderla antes de comprar nada.
MAME es un emulador múltiple: corre sobre un sistema operativo, carga la descripción de cientos de máquinas y tú eliges cuál. El costo es el sistema operativo. arranque de treinta segundos, un planificador de tareas que decide cuándo le toca a tu emulador, y un menú entre tú y el juego.
El enfoque acá se llama SAMP (Single Arcade Machine Port): un port por juego, compilado como firmware nativo. Enciendes y estás jugando, sin menú, sin sistema operativo, sin latencia variable. Y como no hay nada más corriendo en el chip, el temporizado del emulador es determinista: la CPU virtual avanza los ciclos que le tocan en cada frame sin que nadie la interrumpa. Esa es la razón técnica de fondo por la que un micro de 150 MHz puede ser más fiel que un PC mucho más rápido pero compartido.
La contrapartida es honesta: tienes un juego y solo uno hasta que vuelvas a flashear la placa. Para un mueble dedicado, eso es una virtud.
La arquitectura en tres capas (y por qué te importa)
El proyecto no está escrito como "un emulador de Space Invaders". Está separado en tres capas con una capa de abstracción de hardware (HAL) entre medio:
- Núcleos de CPU: la emulación de los procesadores originales. Cada núcleo modela un chip y nada más. No sabe qué juego está corriendo ni sobre qué placa. Hay núcleos de Intel 8080, Zilog Z80, MOS 6502 y MCS-48.
- Capa de máquina: el modelo de la máquina arcade original. qué CPU usa, su mapa de memoria, su set de ROMs, su video por tiles y sprites, sus chips de sonido. Describe el fierro antiguo en abstracto: produce píxeles, audio y pedidos de entrada sin saber nada del hardware de hoy.
- Capa de placa: lo que sí corre hoy. Lee las ROMs desde la microSD, lee los pines GPIO donde están los botones, y saca los píxeles y el sonido hacia tu pantalla y tus parlantes.
La consecuencia práctica de esta separación es la que hace interesante al proyecto: si quieres llevar los siete juegos a otra placa, escribes una sola implementación de capa de placa y no tocas ni una línea del resto. Y si quieres agregar una máquina arcade nueva sobre el hardware actual, escribes la capa de máquina y reutilizas el núcleo de CPU que ya existe.
Hardware: qué se necesita de verdad
La placa base es una Adafruit Fruit Jam, un mini computador con chip RP2350. De ella salen las tres conexiones que hacen funcionar todo:
- Video: DVI sobre HDMI. El RP2350 genera la señal por software con sus bloques PIO, así que no hay un chip de video externo.
- Audio: I2S hacia el jack de audífonos.
- Entrada: los botones arcade se cablean directamente a los pines GPIO. No hay codificador USB ni placa intermedia, que es lo que abarata y simplifica el armado frente a un gabinete clásico.
A eso súmale una microSD (con 64 MB basta y sobra), un cable USB-C para alimentar y flashear, un cable HDMI y una pantalla.
Los controles dependen de qué versión armes. La versión shooter. la de Space Invaders y Lunar Rescue. usa seis botones arcade de 30 mm. La versión con joystick. para Pac Man, Galaga, Donkey Kong y Burger Time. usa un joystick pequeño de 8 vías, un botón de 30 mm, dos mini botones de 24 mm y un pulsador de panel de 16 mm. En ambos casos, los cables quick connect de 0.11" te ahorran soldar en los terminales de cada botón.
Software: flashear y preparar la tarjeta
No necesitas compilar nada. El proyecto publica releases .UF2 listas para
arrastrar y soltar, una por juego: Space Invaders, Lunar Rescue, Galaga,
Pac Man, Ms. Pac Man, Donkey Kong y Burger Time.
Para dejar la placa en modo bootloader:
- Conecta la Fruit Jam al computador con un cable USB-C de datos (no uno de solo carga; es el error más común y no da ningún aviso).
- Pon el interruptor de la placa en ON.
- Mantén presionado el botón BOOT (rotulado BUTTON #1).
- Presiona y suelta el botón Reset.
- Suelta el botón BOOT.
Va a aparecer una unidad llamada RP2350 en tu explorador de archivos. Arrastra
ahí el .uf2 del juego que quieras. Al terminar de copiarse, la placa se
reinicia sola.
La microSD: formato y orden de los archivos
Formatea la tarjeta como FAT32 con esquema de partición MBR. No exFAT, no GPT. Crea dos directorios en la raíz:
/rom/
/samples/
Acá viene el detalle que conviene entender en vez de memorizar. Los archivos de
/rom/ se cargan en orden alfabético inverso, empezando en la dirección de
memoria 0x0000. Eso no es un capricho: la nomenclatura estándar de MAME nombra
los chips de la placa original con letras descendentes (.h → .g → .f →
.e), y ese orden reproduce exactamente cómo estaban mapeados los cuatro chips
de ROM en el zócalo real. Cada archivo ocupa su bloque contiguo, y la CPU
emulada encuentra el código donde lo esperaría el hardware de 1978. Si la ROM
viene como un único binario plano de 8 KB, también funciona.
Un set típico de Space Invaders queda así:
/rom/
invaders.h
invaders.g
invaders.f
invaders.e
/samples/
0.wav
1.wav
...
9.wav
Los WAV de /samples/ son grabaciones de los sonidos originales: el proyecto no
emula el chip de sonido que los sintetizaba en tiempo real, los reproduce. Si
falta alguno, simplemente no suena y el juego corre igual.
Cada juego tiene su propio set de archivos. Lunar Rescue, por ejemplo, además de ROMs y samples necesita una PROM aparte, y las direcciones de carga van indicadas:
/rom/
lrescue.1 (0x0000)
lrescue.2 (0x0800)
lrescue.3 (0x1000)
lrescue.4 (0x1800)
lrescue.5 (0x4000)
lrescue.6 (0x4800)
/samples/
alienexplosion.wav
rescueshipexplosion.wav
beamgun.wav
thrust.wav
bonus2.wav
bonus3.wav
shootingstar.wav
stepl.wav
steph.wav
/prom/
7643-1.cpu
Pac Man mezcla ROMs de programa, ROMs gráficas y PROMs de color en un mismo directorio:
/rom/
pacman.6e
pacman.6f
pacman.6h
pacman.6j
pacman.5e
pacman.5f
82s123.7f
82s126.1m
82s126.3m
82s126.4a
Sobre las ROMs: no vienen incluidas ni en la guía original ni acá, por razones de derechos de autor. La vía legalmente limpia es volcar los chips de una placa arcade original que tengas.
Cuando no arranca: diagnóstico por color de pantalla
Esta es la parte que más tiempo te va a ahorrar, y es una decisión de diseño inteligente del port: como no hay consola serial a la vista cuando el equipo está montado en un mueble, los errores de arranque se reportan pintando la pantalla completa de un color.
| Color | Significado |
|---|---|
| Rojo | No encuentra la microSD o no la puede montar |
| Amarillo | La tarjeta montó bien, pero /rom/ no tenía archivos usables, o fallaron todos los samples |
| Sin color, el juego corre | Todo cargó bien |
Si te sale rojo, en la práctica casi siempre es una de tres: la tarjeta no está bien insertada, quedó formateada en exFAT (pasa solo si usaste el formateador por defecto de Windows con una tarjeta grande), o el esquema de partición es GPT en vez de MBR. Una tarjeta chica es tu amiga acá: con 64 MB el formateo sale en FAT32 sin que tengas que forzar nada.
Si te sale amarillo, la tarjeta está bien y el problema es el contenido:
revisa los nombres de archivo carácter por carácter, porque el orden alfabético
inverso es lo que define el mapeo a memoria. Un invaders.H en mayúscula o un
invaders.h.bin agregado por el sistema operativo rompen el orden.
Trucos de video que trae el port
Una vez andando, los botones de la propia Fruit Jam cambian la salida de video:
- Botón #1: ajusta la relación de aspecto para acomodarla a tu pantalla.
- Botón #2: rota la imagen a cualquiera de las cuatro orientaciones. Esto sirve más de lo que parece: los arcades verticales como Space Invaders y Pac Man usaban el monitor en modo tate (vertical), y si montas una pantalla de lado, recuperas la proporción real del original en vez de una imagen achatada con franjas negras.
- Botón #3 (en Space Invaders): invierte la señal a modo espejo, pensado para montajes con un vidrio semiespejado que reproduce el efecto Pepper's Ghost del gabinete original.
El panel de control
El panel se imprime en 3D y lleva los agujeros de 30 mm para los botones. Si quieres el acabado de gabinete de verdad, existen overlays laminados de reproducción que se consiguen en tiendas online especializadas.

Al elegir uno, busca que venga con respaldo adhesivo de vinilo. La mayoría trae marcas de registro impresas que te sirven de guía para cortar tú mismo los cinco agujeros de 30 mm de los botones.

Variantes y mejoras
Tres caminos concretos para extender el proyecto más allá de lo que cubre la guía original:
1. Portarlo a una Raspberry Pi Pico 2. Es la extensión más natural y la arquitectura está pensada para esto: la Pico 2 lleva el mismo RP2350 que la Fruit Jam, así que los núcleos de CPU y las capas de máquina corren tal cual. Lo que tendrías que escribir es una capa de placa nueva, porque la Pico 2 pelada no trae ni conector HDMI ni ranura microSD. En concreto: la señal DVI se genera por PIO sobre GPIO (necesitas una breakout HDMI o resistencias en configuración de par diferencial), la microSD se cuelga del bus SPI, y los botones arcade van directos a GPIO libres con pull up interno, igual que en el diseño original. El audio I2S requiere un DAC externo pequeño. Es un proyecto de fin de semana para alguien con experiencia, y el resultado es el mismo emulador sobre una placa bastante más barata y fácil de conseguir en Chile.
2. Agregar una máquina arcade nueva. Como los núcleos de CPU ya están escritos y probados, sumar un juego que corra sobre Z80 o 6502 no implica escribir un emulador desde cero: implica escribir su capa de máquina, o sea describir su mapa de memoria, su set de ROMs y cómo dibuja tiles y sprites. Es el punto de entrada más realista si quieres contribuir al proyecto.
3. Gabinete bartop con dos jugadores. El diseño de la guía es de un jugador. Duplicando el juego de controles y cableando el segundo set a GPIO libres, tienes la base para los modos de dos jugadores por turnos que traían los originales. El costo extra es solo el de un joystick y unos botones más, porque la placa es la misma.
Personalización para Chile
Este proyecto está pensado sobre una placa Adafruit que en Chile hay que importar, pero la mayoría del resto del BOM se consigue local. En MechatronicStore busca por estos componentes:
- Botones arcade de 30 mm con LED. son los del panel principal; necesitas seis para la versión shooter.
- Joystick arcade. para la versión de Pac Man, Galaga y Donkey Kong.
- Tarjeta microSD. cualquiera de baja capacidad sirve, y de hecho conviene: mientras más chica, más fácil que el formateo FAT32/MBR salga a la primera.
- Cable HDMI. para la salida de video hacia el monitor o la TV.
- Cable USB-A a USB-C de datos. para flashear el
.uf2y alimentar. - Jumpers macho macho. para el arnés de cableado de los botones hacia los GPIO, si no usas los conectores quick connect.
Sobre la placa principal: el RP2350 de la Fruit Jam es el mismo chip de la Raspberry Pi Pico 2, que sí es fácil de conseguir en Chile y cuesta una fracción. No es un reemplazo directo. la Fruit Jam ya trae HDMI, microSD y audio integrados, y la Pico 2 no. pero sí es el camino si prefieres armar todo desde cero en vez de importar. Revisa la sección de variantes de más arriba para saber exactamente qué tendrías que agregar.
Nota de esta edición: los precios, SKU y stock exactos de cada componente no pudieron verificarse contra el catálogo al momento de escribir esta versión. Busca cada ítem por nombre en la tienda para ver la disponibilidad vigente.
Recursos
- Tutorial original: Arcade Machine Ports for Fruit Jam, por John Park en Adafruit Learning System. Ahí están el arnés de cableado completo, los archivos del panel impreso en 3D y el enlace al repositorio del proyecto con las releases
.UF2por juego. - Núcleo de CPU Z80 (créditos del autor original): superzazu/z80. licencia MIT.
- Núcleo de CPU 6502 (créditos del autor original): superzazu/6502. licencia MIT.
- Núcleo de CPU Intel 8080:
intarga/i8080e— licencia MIT. - Emulador de Space Invaders base:
shotto42/invaders. - Núcleo MCS-48: portado desde
mcs48_cpu_devicede MAME (BSD-3-Clause), copyright Dan Boris, Mirko Buffoni, Aaron Giles y Couriersud. - FatFs: biblioteca de sistema de archivos de ChaN, usada para leer la microSD.
Versión chilena inspirada en la guía de Adafruit, con equivalencias de componentes en stock local en MechatronicStore.




