complete
chip8-handheld / build.log
Using the Chip8 emulator I'd already written, I built a retro-inspired handheld console: my first personal embedded project, and the first time I'd ever soldered or 3D-printed anything. I developed and tested it on a Raspberry Pi 5, then moved the final build over to a Raspberry Pi 3, hand-soldering a custom keypad PCB and an OLED display into a case I designed and 3D-printed myself.
hardware: Raspberry Pi 3 (final build), SSD1309 OLED (SPI), custom 4×4 keypad PCB, buzzer + status LED, 3D-printed case
software: Rust, hand-written SPI display driver, full Chip8 interpreter with quirks support
- Planned to use an SSD1306 over I2C, but I2C was too slow for fast-updating game screens: switched to an SSD1309 over SPI, then had to write my own display driver from scratch since the crate I was using only supported I2C.
- The Raspberry Pi 5 I developed on has a newer RP1 I/O controller that broke most standard GPIO libraries; ended up on rppal, one of the few that worked with it.
- Learned to solder for this project: from the custom 4×4 keypad PCB to the rest of the wiring.
- Runs my own game-selection ROM (written in Octo assembly) to switch between games without swapping files.