Un port hecho por un aficionado lleva Pac-Man Championship Edition a un microcontrolador de 8 bits, que genera video compuesto y audio con un puñado de componentes baratos.

El port de Pac-Man Championship Edition corre en un sistema de juego basado en el Arduino Uno, con un circuito propio para generar la salida de video y audio.

Un microcontrolador de 8 bits de los que se usan para experimentar con electrónica ya puede correr en un televisor una versión rápida de Pac-Man Championship Edition. El proyecto usa un Arduino Uno, unas pocas resistencias y algunos botones para armar una máquina arcade sencilla, sin chip gráfico dedicado ni memoria adicional.

Detrás está el maker Scott Porter, que llevó al Arduino Uno original el modo contrarreloj por puntaje de Pac-Man Championship Edition. El juego corre sobre un motor propio que Porter ya había usado para portar Manic Miner, un clásico lanzado para el ZX Spectrum. Con esta versión, Pac-Man se suma a Scramble y Space Invaders en la lista de juegos que soporta el motor.

¿Qué hardware hace falta?

Los requisitos son modestos. El montaje lleva un Arduino Uno con el microcontrolador ATmega328P, seis resistencias y botones para que juegue el usuario. También existe un shield propio, con un diseño de placa que integra los botones, la salida de video y el circuito que mueve el parlante. Ese shield admite además un puerto para control de Nintendo Entertainment System (NES), como alternativa a los botones sueltos.

El juego entrega video compuesto, así que se conecta a un televisor o monitor compatible por un conector RCA. Para pantallas sin entrada de video compuesto se puede usar un conversor de compuesto a HDMI, aunque que funcione depende del conversor y de la pantalla.

¿Cómo genera la imagen sin procesador gráfico?

El Uno no tiene procesador gráfico. El motor del juego genera la señal de video directamente desde los pines digitales del microcontrolador, y las resistencias combinan esas señales para producir los niveles de voltaje que necesita la salida compuesta, incluida la información de sincronismo que usa la pantalla.

El motor recurre a una técnica conocida como racing the beam, que dibuja los gráficos al mismo ritmo en que el televisor barre la pantalla en vez de guardar un cuadro completo en un framebuffer. Según la documentación del proyecto, soporta una resolución efectiva de 256 × 256 píxeles, mapas de baldosas con desplazamiento y hasta nueve sprites de 16 × 16 píxeles. También ofrece desplazamiento con pantalla dividida y una tasa fija de 50 cuadros por segundo. Son las capacidades que declara el desarrollador para el motor, no resultados medidos de forma independiente.

El audio sale por modulación por ancho de pulso (PWM) de dos canales. El proyecto usa resistencias adicionales y un circuito con transistor para mover un parlante. El sonido es opcional, así que el juego se puede armar sin ese circuito.

El detalle del reloj que puede arruinar la imagen

Hay un punto del hardware que importa, la fuente de reloj del Uno. El desarrollador advierte que algunas placas compatibles baratas usan resonadores cerámicos en vez de cristales de cuarzo, y que su temporización puede no ser lo bastante precisa para generar un video estable, lo que se ve como una imagen que tiembla. El repositorio recomienda de forma explícita el Uno original con el ATmega328P y un cristal de 16 MHz como corresponde. No hay que dar por hecho que el proyecto funcione en cualquier placa que lleve el nombre Uno.

El montaje de juego combina un control propio, una pantalla compacta y una placa de circuito que se encarga de la salida de video y de los botones.

Cómo se arma la consola

Armar la consola consiste en cablear la red de resistencias de la salida de video, conectar los controles y cargar el sketch del juego que corresponda. El repositorio trae sketches separados para cada juego soportado, junto con instrucciones para elegir entre botones o control de NES con un ajuste en el archivo engine.def. El desarrollador publicó también los esquemáticos y los archivos de fabricación de la PCB para quien quiera montar el shield opcional.

Una vez cargado el firmware, el Uno se conecta a una pantalla compatible por su salida de video compuesto. En Pac-Man, mantener apretados Start y Select al encender la placa borra la tabla de récords. El juego desafía a recoger puntos y frutas contra el reloj, y al limpiar la mitad del laberinto cambia el trazado, lo que mantiene el ritmo del modo contrarreloj.

¿Bajo qué licencia está el código?

El firmware y el motor están en un repositorio público de GitHub bajo la licencia GNU General Public License versión 3 (GPL-3.0). Cualquiera puede revisar y modificar el código, adaptar el motor y probar los otros juegos incluidos. El repositorio trae además los archivos del shield necesarios para reproducir el hardware.

Que el código esté bajo una licencia abierta no se debe confundir con la licencia de la propiedad intelectual original de Pac-Man. Es un port hecho por un aficionado, no un lanzamiento oficial del dueño de los derechos del juego.

Para estudiantes de electrónica y aficionados, el proyecto muestra cómo una temporización cuidadosa, el video generado por software y un circuito analógico simple convierten un microcontrolador en un sistema de juego básico. Sirve también para practicar generación de video compuesto, audio por PWM y programación de juegos a bajo nivel con un hardware conocido.