Macintosh emulator works on ESP32-P4 display devkits from M5Stack and Waveshare

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.

ESP32-P4 MacOS emulator

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

System 7 ESP32-P4 WiFi web browsing

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.

ESP32-P4 Macintosh emulator

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

Share this:

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.

Radxa Dragon Q8B Edge AI SBC with Snapdragon 8cx Gen3 SoC
Subscribe
Notify of
guest
The comment form collects your name, email and content to allow us keep track of the comments placed on the website. Please read and accept our website Terms and Privacy Policy to post a comment.
5 Comments
oldest
newest
Boardcon MINI1126B-P AI vision system-on-module wit Rockchip RV1126B-P SoC