Can a 2000-era phone with an 84×48 monochrome screen and a single buzzer still run new games? Developer Hoani Bryson says yes, and his entry won the eighth Nokia 3310 Jam out of 51 submissions.
What Bryson actually built
Two pieces: an open source game engine written in Go, and a replacement PCB that drops a Raspberry Pi Pico into the old phone shell. The board talks to the original Nokia display and reuses the existing keypad, so the case closes up and feels like stock hardware. Jam rules cap entries at 84×48 pixels, one buzzer for sound, and no more than 12 buttons.
How the engine stays portable
The engine is built on Ebitengine for desktop and web builds, and TinyGo for the Pico. Your game implements three methods, Setup, Update, and Draw, and the engine handles display output, sound, and button input for whichever target you pick. That split means you can debug in a browser tab and only flash the board when the logic works.
The drawing API covers text, shapes, sprites, and dithering. Images convert to PBM data that lives in program memory instead of RAM, which matters on a microcontroller with 264 KB of SRAM. An 8×8 threshold map fakes grayscale through dithering, and a desktop shader mimics the slow pixel response of the original LCD.
Try it on your own bench
You do not need a Nokia to start. Install TinyGo, write a Setup/Update/Draw loop, and test it in the browser build first. When you want hardware, a Pico from circuit.rocks plus a small monochrome display on the I2C pins (SDA and SCL) gives you a similar 1-bit target. Check the GitHub links in the Hackster write-up for the engine and PCB files, and if your display looks smeared, lower the dithering threshold before blaming the wiring.
Frequently Asked Questions
What does the Nokia 3310 mod use for its brain?
A custom PCB carrying a Raspberry Pi Pico replaces the original board. It drives the stock Nokia display and reads the existing keypad.
What skills and parts do I need to try something similar?
A Pico, a small monochrome display, TinyGo installed, and basic Go knowledge. PCB design is optional if you prototype on a breadboard first.
What will I learn if I build this?
You will learn embedded Go with TinyGo, game loops split into Setup, Update, and Draw, 1-bit graphics with dithering, and how to target both browser and microcontroller from one codebase.
