ESP32 chips have been used for retro gaming and computing for years, but Austin McChord (Amcchord) adds to that with a Macintosh emulator ported to a couple of ESP32-P4 display devkits.
His project is a full port of the BasiliskII Macintosh 68k emulator, bringing classic Mac OS (System 7.x through Mac OS 8.1) to portable ESP32-P4 embedded devices with touchscreen, USB peripherals, and WiFi support through an ESP32-C6 on the boards.
The main development platform appears to be the M5Stack Tab5 equipped with a 5-inch touchscreen display with 1280×720 resolution. However, if you need something with a larger screen, the Waveshare ESP32-P4-WIFI6-Touch-LCD-10.1 is also supported, and features a 10.1-inch display with 1280×800 resolution and a 10-point capacitive touchscreen. The actual Mac OS resolutions used are 640×360 and 640×400, respectively, then scaled twice to the native resolution of the display.
Highlights of the project:
- CPU – Motorola 68040 emulation with FPU (68881) — 2-3 MIPS
- RAM – Configurable from 4MB to 16MB; allocated from ESP32-P4’s 32MB PSRAM
- Storage – Hard disk and CD-ROM images loaded from microSD card
- Display – 640×360 or 640×400 virtual display (2x scaled to 1280×720/800 physical display); 1/2/4/8-bit color depths at 24 FPS
- Video – Optimized pipeline with write-time dirty tracking, double-buffered DMA, and tile-based rendering
- Audio – Classic Mac sound output via ES8388 codec; toggleable in boot GUI
- Networking – WiFi internet access via NAT router with support for TCP, UDP, ICMP, DHCP…
- Input
- Capacitive touchscreen used as a mouse
- USB keyboard/mouse support
The emulator is compatible with System 7.1, System 7.5.x, Mac OS 8.0, and Mac OS 8.1.
Each task is attached to a specific core of the ESP32-P4:
- CORE 0 – Video & I/O Core
- Video rendering task
- Double-buffered DMA
- 2×2 pixel scaling
- Input task (60Hz)
- USB HID processing
- Audio output (ES8388)
- Network RX polling
- Event-driven @ 24 FPS
- CORE 1 – CPU Emulation Core
- 68040 CPU interpreter
- Fast-path memory access
- Write-time dirty marking
- Batch instruction execution
- ROM patching
- Disk I/O
The performance of the Motorola 68040 emulator running on ESP32-P4 is comparable to a Macintosh Quadra 610 (25 MHz 68040). It can also render video at 24 FPS, and delivers 2-3 MIPS CPU speed.
You’ll find the source code, ported with Anthropic Claude’s assistance, and detailed documentation of the implementation in the project’s GitHub repository.
Via Hackaday

Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress. We also use affiliate links in articles to earn commissions if you make a purchase after clicking on those links.






