How it got built
Got an Arduino starter kit for Christmas. Blinked an LED the same day. Stayed up that night reading about microcontrollers. That was it — fully obsessed from day one.
Found the CYD (Cheap Yellow Display) — an ESP32 with a built-in 480×320 touchscreen for about $4. Ordered it thinking it'd be good for a simple project. Then found peanut-gb, a single-header Game Boy emulator in C.
// the moment it clicked
gb_init(&gb, rom_read, ram_read, ram_write, error, NULL);
First builds kept showing a white screen on boot. Spent days debugging. Turned out the SD card had to be initialized before anything else — before Serial, before malloc, before the display. Once the SD claimed the SPI bus first, everything worked.
void setup() {"{"}
// SD MUST be first — before malloc, before Serial
SD.begin(SD_CS, sdspi, 400000);
Serial.begin(115200);
// ... everything else
{"}"}
The emulator ran but at 0.1fps. Every frame was reading the entire ROM from the SD card. Fixed it with a dual bank cache — keep bank 0 in RAM permanently, load other banks on demand. Jumped to ~60fps immediately.
No 3D printer, so the case is cardboard, hot glue, and whatever craft supplies were around. It actually works fine as a housing and has a certain charm to it. DASH OS v30 runs inside a cardboard box and that's kind of great.