Project

esp32-rtype

experimental

Display-first Irem R-Type emulator experiment for ESP32-S3 and ESP32-P4 boards.

Overview

esp32-rtype is a deliberately narrow attempt to run Irem R-Type's V30/M72 hardware path on an ESP32. The primary target is the ESP32-8048S043C, an ESP32-S3 board with a 480x800 RGB panel; the M5Stack Tab5 and its ESP32-P4 remain a secondary target.

The goal is to run the live V30/M72 video path on inexpensive hardware and compare it against a host renderer, not to build a general MAME port. Audio, physical controls, menus and save states are outside the current scope.

How it works

The main CPU ROM is flash-mapped from a dedicated partition and graphics ROMs are loaded from SPI flash. Work, video, sprite, palette and sound RAM occupy sparse PSRAM-backed regions around the current V30/M72 execution path.

Rendering follows M72 tile priorities, sprite-list traversal and palette semantics. On the ESP32-S3, snapshots are taken only after the M72 update queue drains, then handed to the RGB panel with direct framebuffer output and triple source framebuffers. The 800x480 display carries a proportionally scaled 720x480 game image.

Features
Live V30/M72 path

Runs the live R-Type V30/M72 path on ESP32-S3 hardware rather than replaying captured frames.

Flash and PSRAM layout

CPU and graphics ROMs remain in flash; the larger mutable M72 regions use PSRAM.

M72 video semantics

Tile priority masks, sprite traversal and palette RAM follow the host and firmware MAME-style renderer semantics.

Stable frame capture

Snapshots happen after queued video updates drain, avoiding mid-update frames with cleared background attributes.

Host comparison

The repository includes host and firmware renderers plus a comparison workflow for checking displayed output.

Deliberately limited scope

No audio output, controls, menus, save states or wider MAME compatibility.

Architecture
ROMs in flash main CPU partition · graphics files V30 / M72 path execution · sparse PSRAM map M72 renderer tiles · sprites · palette Frame snapshot queue drain · triple buffers RGB panel 720x480 image at 40,0 R-Type ROM and display path on ESP32-S3
Posts
The M5Stack Tab5