Skip to content

This is the GRID (Gaming Retro Interactive Device), my fun hobby project to create a custom arcade box.

Notifications You must be signed in to change notification settings

bryanluu/GRID-arcade

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GRID-Arcade

This is the GRID (Gaming Retro Interactive Device), my fun hobby project to create a custom arcade box.

What can it do?

First it welcomes the player:

a GIF of the intro of the GRID-arcade, showing a welcome message

Then you can select a program from the menu:

the menu of the GRID-arcade, showing Maze, Boids and Calib as options

You can play a Maze escape game:

GIF footage of a playthrough of the Maze game

You can fly around as a Boid (digital bird):

GIF footage of the Boids program

You can adjust the input calibration, if something feels off:

GIF footage of the Calib program

Hardware

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.

image of the GRID-arcade enclosure

Software

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:

screenshot of the GRID-arcade intro screenshot of the GRID maze game screenshot of the GRID boids program

In addition, an "LED-mode" switch (by pressing the L key) can be activated for a more faithful look.

screenshot of the LED mode for GRID maze screenshot of the LED mode for GRID boids

Running the GRID emulation

The emulation uses a simple Makefile with debug-friendly targets.

Prereqs

  • SDL2 development headers and libs
    • Linux: sudo apt install libsdl2-dev (or use sdl2-config / pkg-config)
  • g++ with C++17

Targets

  • make
    Release-ish build (O2).

  • make DEBUG=1 or make 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 with DEBUG=1 then run.

  • make clean
    Remove the build/ folder.

Notes

  • SDL flags are discovered via pkg-config sdl2 or fall back to sdl2-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

About

This is the GRID (Gaming Retro Interactive Device), my fun hobby project to create a custom arcade box.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published