
This E-Ink Handheld Runs a Game Boy Emulator at 60 Hz on ESP32-S3
A maker coaxed an e-ink panel into 60 Hz gaming, running a Game Boy emulator on a touch-driven ESP32-S3 board by exploiting its parallel refresh interface.
An impossible refresh rate, made possible
Every so often a project lands on my bench that makes me grin, because it does the one thing everyone swore couldn't be done. This is one of them: designer Wenting Zhang has built a working Game Boy emulator that runs a beloved retro handheld's library at a full 60 Hz on an e-ink screen. Yes, e-ink, the display technology we all associate with sleepy page turns on an e-reader. Running here on an ESP32-S3 board, it plays smoothly, with touch controls and 3x scaling. If you know how e-paper works, your first reaction is disbelief. Mine was too, until I looked at how it was pulled off.
Why e-ink was supposed to be too slow
Electronic paper draws its images by physically shuffling tiny pigment particles around inside microcapsules using an electric field. That's what gives e-ink its gorgeous, glare-free, paper-like look and its near-zero idle power draw. But moving physical particles takes time. A typical full refresh can take hundreds of milliseconds, and you often see that characteristic black-to-white flash while the panel resettles. For reading a book, that's fine. For a game demanding sixty frames every second, it sounds like a non-starter. The particles simply shouldn't be able to keep up.
The clever part: the parallel interface
Here's the hack, and it's a genuinely elegant one. The board in question is the M5Stack PaperS3, which pairs an ESP32-S3 microcontroller with an e-paper panel. The critical detail is how that panel is wired. Most hobbyist e-ink displays are driven over a serial interface, typically SPI, which feeds pixel data one bit-stream at a time. That serial bottleneck is a big part of why those panels feel slow to update.
The PaperS3's panel, by contrast, exposes a parallel interface. Instead of trickling data through a single narrow channel, the controller can push many bits at once, dramatically raising the bandwidth to the display. Zhang leaned into that headroom to perform fast partial refreshes, updating just the regions of the screen that change rather than flashing the whole panel each frame. Combine high-bandwidth parallel writes with tight partial-update logic, and suddenly the panel can be nudged along fast enough to sustain 60 Hz. The physics of the particles didn't change; the plumbing feeding them did.
Squeezing a console into a microcontroller
Getting the display to cooperate is only half the win. The ESP32-S3 also has to run the emulation itself, decoding the handheld's CPU instructions, mixing the display output, and applying that 3x scaling so the small original resolution fills the panel. Layering responsive touch controls on top means the whole loop has to stay tight and predictable. It's a lovely demonstration of how much you can wring out of an inexpensive, widely available microcontroller when you understand exactly where the bottlenecks live and refuse to accept them.
Why this delights me
What I love about this build is that it's pure constructive curiosity. Nobody needed an e-ink Game Boy. It exists because someone looked at a display everyone had written off for motion, spotted an underused parallel bus, and asked "what if?" That's the maker spirit at its best: reading a datasheet closely enough to find the loophole, then building something joyful through it. It also quietly expands what we think e-paper can do, and I suspect other tinkerers will borrow the parallel-refresh trick for their own fast-updating projects.
If you've got a PaperS3 gathering dust, you now have an excellent excuse to fire it up.
Sources: Hackaday (hackaday.com), July 2, 2026.
