This is the GRID (Gaming Retro Interactive Device), my fun hobby project to create a custom arcade box.
First it welcomes the player:
Then you can select a program from the menu:
You can play a Maze escape game:
You can fly around as a Boid (digital bird):
You can adjust the input calibration, if something feels off:
The display is a 32x32 RGB LED matrix connected with an Adafruit Metro M0 (SAMD21) equipped with a Adafruit RGB Matrix Shield. The unit is controlled by a PS2 Joystick hooked up to the Metro.
Everything is housed in a custom unit built in collaboration with my friend Herman Tabunganua.
The Arduino IDE was used to compile and program the GRID software to the Adafruit MCU.
The GRID arcade can also be run as a desktop emulation. The software for each target is identical, to enable hardware-independent development and debugging.
The software emulation uses the SDL library on a fixed-step timing loop to simulate the GRID logic and display. All the programs in GRID on hardware are available on the emulation. The main difference is that SDL displays the pixels as blocks. See screenshots below for how the emulation looks:
In addition, an "LED-mode" switch (by pressing the L key) can be activated for a more faithful look.
The emulation uses a simple Makefile with debug-friendly targets.
- SDL2 development headers and libs
- Linux:
sudo apt install libsdl2-dev(or usesdl2-config/pkg-config)
- Linux:
- g++ with C++17
-
make
Release-ish build (O2). -
make DEBUG=1ormake debug
Debug build with symbols, AddressSanitizer, and-DDEBUG.
Flags include:-g -O0 -fno-omit-frame-pointer -fsanitize=address. -
make run
Build then run./build/grid. -
make run-debug
Build withDEBUG=1then run. -
make clean
Remove thebuild/folder.
- SDL flags are discovered via
pkg-config sdl2or fall back tosdl2-config. - On debug builds, ASan is enabled for both compile and link. If you need to disable leak reports temporarily:
ASAN_OPTIONS=detect_leaks=0 ./build/grid









