The Arduino line of development boards was fundamental in bringing the power and flexibility of microcontrollers to the masses in a time when using an MCU required significant knowledge and technical skill. When Espressif released their IoT-focused ESP8266 module, makers suddenly had an ultra-affordable microcontroller option with built-in WiFi. Then the ESP32 came along and gave us even more processing power, RAM, and an onboard Bluetooth interface. The ESP32 is also intended for IoT applications, but it turns out the versatile module can also work quite well as an emulator for Atari, NES, Sega Master System, and Game Gear games.
You can purchase a shiny new ESP32-based development board for as little as $2.50, which is pretty amazing when you consider what you’re getting. The ESP32 module has a Tensilica Xtensa LX6 processor running at either 160 or 240 Mhz, 512 KiB of SRAM, WiFi connectivity, Bluetooth connectivity, and two high-quality 8-bit DACs. Those DACs are the key to using an ESP32 development board to run video game emulators. One DAC is used to generate an APLL monaural audio signal, which can be output through a standard 3.5 mm audio jack or an RCA cable.
As we covered a couple of years ago when Bitluni published his testing results, it’s also possible to use one of those jacks to generate a composite video signal in either PAL or NTSC format. This project takes advantage of that to produce the color video for whichever video game console you’re emulating. You can choose to emulator the Atari 400/800, XL models, XEGS, and 5200, or the Nintendo Entertainment System, or the Sega Master System and Game Gear. You can use either a Wiimote or a keyboard as a controller. Keyboards can be connected via a Bluetooth Classic or EDR (Enhanced Data Rate), or via infrared if you connect an IR sensor to the ESP32 board. Using an ESP32 board for emulation is more affordable than a single-board computer like a Raspberry Pi, and can also boot almost instantly instead of requiring a minute or two to load an operating system first.