When most people think of E-Ink e-paper displays, their immediate reactions are “slow page turns” and “only good for reading books.” But hardware engineer Wenting Zhang used M5Stack’s Paper S3 development board to create a Game Boy emulator that runs smoothly on an E-Ink screen at 60FPS, challenging many people’s assumptions about e-paper technology.

An engineer built a 60FPS Game Boy emulator using an e-paper display
Hardware platform: M5Stack Paper S3
Wenting Zhang uses the M5Stack Paper S3, an E-Ink development board based on the ESP32-S3 microcontroller. Specifications include a 4.7-inch 960×540 resolution touch E-Paper display, 8MB PSRAM, 16MB external flash memory, built-in gyroscope, buzzer, and physical buttons. The product has been discontinued (End of Life).

Paper S3’s E-Ink screen uses a raw row column driver interface (also called parallel interface), which differs from typical LCD parallel interfaces. The key is that it allows developers to bypass traditional waveform update methods and directly control each pixel’s driving, which is the basic requirement for achieving high update rates.

Core Challenge: Running E-Ink at 60FPS
E-Ink screens are slow because they need to apply specific voltage waveforms to each pixel to move the black and white particles to the correct positions. The traditional update method is a full-page refresh, updating all pixels at once, which takes hundreds of milliseconds.
Wenting’s approach is to independently manage the state of each pixel, using a pipeline update method. Each pixel stores a 4-bit state, which is compared with the incoming frame buffer to determine what commands to send to the screen. LCDIF and DMA are responsible for actually delivering pixel data to the screen, allowing the core to simultaneously calculate the next batch of pixels. The entire system runs on the second core of the ESP32-S3, with each iteration set to approximately 17 milliseconds, achieving a 60Hz refresh rate. Double buffering also ensures tear-free display output.

However, the Game Boy’s native resolution is only 160×144 pixels, far below the Paper S3’s 960×540. Wenting’s approach uses 3x pixel-perfect scaling with dithering to render four shades of gray, only needing to process 160×3×144 pixels of data, making high refresh rates possible on the resource-limited ESP32-S3.

This is not Wenting Zhang’s first time tackling a Game Boy-related hardware project. Years ago, he had already fully implemented a Game Boy hardware re-implementation on FPGA, giving him a deep understanding of the Game Boy architecture. This time, he ported the high refresh rate E-Ink driving technology accumulated during his FPGA era to the more affordable and ubiquitous ESP32 platform.
Simulation Core: Selecting the Best Solution from Three Open-Source Simulators
Wenting had previously implemented a Game Boy emulator on an FPGA, but given that there are already plenty of mature open-source solutions for Game Boy emulation on microcontrollers, this time he decided to use an existing emulator. He tested three options: PeanutGB, WanaCGB, and Crankboy.

PeanutGB is the most popular Game Boy emulator for microcontrollers, WanaCGB is its fork (modified to read 16-bit instructions to reduce memory access), and Crankboy is a Game Boy emulator frontend for the Playdate handheld, with extensive optimizations to the memory mapping path.
After performance testing multiple games, Wenting chose the best-performing Crankboy as the emulation core. With dynamic frame skipping, many games can achieve 100% of the original Game Boy speed, with actual frame rates around 30 to 60 FPS. However, he admitted that supporting Game Boy Color isn’t quite practical yet, since the GBC allows the CPU to run at double speed, and the ESP32-S3 still has some performance gap to close.
The Sound Compromise: From PDM to Pseudo-Polyphonic Buzzers
Sound is the most interesting technical compromise in this project. Paper S3 only has one PWM buzzer, which can only produce a single tone. The Game Boy, on the other hand, has four sound channels (two square wave channels, one sample channel, and one noise channel).

Wenting initially tried using the PDM output of the I2S peripheral as a DAC, followed by an RC filter to play PCM audio, but the sound was too quiet and impractical. He eventually decided to return to the essence of a buzzer with a clever approach: approximating all four channels as square waves (the sample and noise channels were also forcibly approximated), then rapidly switching between the four square wave channels to create a pseudo-polyphonic effect.
His own assessment of the result was: “It’s both good-sounding and bad-sounding.” The good part is it’s loud enough and clear enough, the game music is still recognizable. The bad part is a Game Boy should never sound like this. All sound processing was offloaded to the second core, ensuring it doesn’t consume the emulator’s CPU resources.
Operation and Additional Features
Paper S3 is equipped with a touchscreen, and Wenting directly drew a virtual joystick on the screen, allowing players to operate it directly via touch. He also experimentally added Bluetooth LE controller support—while compatibility is currently limited, it’s sufficient as a proof of concept.

In addition, he also added instant save and load functionality, allowing you to save the complete Game Boy state at any time. Next time you pick up the Paper S3, you can directly load your save and return to your game progress without starting over. This is a very practical feature for handheld gaming. This firmware has been uploaded to M5 Burner, and anyone interested can flash it directly onto the Paper S3. Those who are interested can check out this complete video:
E-Ink’s possibilities extend far beyond e-books
What makes Wenting Zhang’s project most impressive isn’t that “someone got a Game Boy emulator running on E-Ink,” but rather that he proved E-Ink screens can achieve refresh rates comparable to traditional LCDs when driven properly. This has profound implications for E-Ink applications, from digital signage and information dashboards to interactive devices, all of which could benefit from this high-speed driving technology.
Actually, Wenting has previously published technical videos on achieving 60Hz low-latency updates on E-Ink displays, and even converted an E-Ink screen into a computer external monitor. This Game Boy emulator is simply the latest application of that technical approach.
Unfortunately, the Paper S3 has been discontinued, but M5Stack recently released the new PaperColor (featuring a Spectra 6 color E-Ink display), so perhaps Wenting’s next project will be a color E-Ink Game Boy.
Source: KOCPC Chinese