60 FPS on E-Ink? This Game Boy Emulator Shows It Can Be Done


Paper Boy S3 ePaper E-Ink Game Boy
Wenting Zhang looked at the M5PaperS3 and decided its e-ink screen could do more than display static pages. The compact development board from M5Stack carries an ESP32-S3 processor, a 4.7-inch 960-by-540 e-ink touchscreen, a simple buzzer, and a microSD slot. He turned the whole package into a handheld that runs original Game Boy software at a steady 60 frames per second.



Most e-ink displays are noted for being a little slow. It has a lot to do with how charged particles in the panel take their time drifting into place, thus a full refresh can take hundreds of milliseconds and frequently produces a faint afterimage. Zhang stomped on those physical constraints. He did not simply accept the status quo and dismiss those restrictions as the maximum. Instead, he created a bespoke driver that only works with the display’s low-level parallel interface. This driver holds a super-compact state record for each pixel, with only four bits per dot.

That state buffer receives a new set of image data every sixtieth of a second, while the driver nudges each pixel into place using a series of voltage changes. It’s a clever approach that renders the standard global lock, which requires the entire panel to complete one full cycle before receiving fresh commands, completely obsolete. The Game Boy panels are small (160 by 144 pixels), therefore a crisp threefold upscale with slight dithering is well within the processor’s capabilities. Fortunately, all of the active buffers fit inside the ESP32-S3’s extremely fast internal SRAM.

Paper Boy S3 ePaper E-Ink Game Boy
The two cores on the board function together, with one running the emulator itself. The second core is responsible for processing display updates and sending new data via DMA transfers timed to the vertical sync signal. This preserves the 60 Hz rhythm perfectly on beat even when the emulation workload changes. Zhang tried several Game Boy emulator cores before settling on CrankBoy, an optimized fork of Peanut GB. It provided the best trade-off between speed and compatibility on this hardware. Most games run close to full speed. The system will skip the odd frame to keep the timing just perfect for sound and input in the event of a demanding situation. Unfortunately, Game Boy Color titles remain out of reach for the time being due to their roughly doubled processing demand.

Paper Boy S3 ePaper E-Ink Game Boy
The sound emanates from a single buzzer on the board. Zhang created a rapid-switching scheme that cycles between crude approximations of the four original Game Boy audio channels. The end output is recognized chiptune music rather than exact waveform playback, but it preserves the essence of the games without the need for additional gear. The touchscreen includes all of the controls. The panel’s lower portion displays a Game Boy-style directional pad and various action buttons. Any taps register right away. There is experimental Bluetooth LE gamepad support, although it only works with a limited number of controllers right now.

Paper Boy S3 ePaper E-Ink Game Boy
Saved data is stored on the microSD card, and the hardware power button only cuts power, with no shutdown process (Zhang added a manual save button to the screen). Quick save states add an extra degree of security during lengthy gaming sessions. The entire project’s source code (known as Paper Boy S3 in some places) is now available on GitLab. There’s also a separate proof-of-concept JIT recompiler that another developer worked on, demonstrating one approach to go even faster if someone wants to take it a step further.
[Source]



60 FPS on E-Ink? This Game Boy Emulator Shows It Can Be Done

#FPS #EInk #Game #Boy #Emulator #Shows

Leave a Reply

Your email address will not be published. Required fields are marked *