ESP32 Emulator

Cyders

Fast, modern ESP32 emulator for testing CYD (Cheap Yellow Display) firmware on your desktop

Get Started View on GitHub
Capabilities

Everything you need to test ESP32 firmware

⚡ Real-time Performance

40+ MIPS execution speed with dual-core ESP32 emulation for accurate firmware testing

🎨 Full LVGL Support

Hardware-accelerated 60 FPS rendering with complete touch input simulation

🔧 Zero Setup

Auto-builds Python environment locally with UV package manager. No system Python required

🔍 Debug UI

Real-time register view, stack inspection, touch logging, and UART output monitoring

Benchmarks

Built for Speed

Metric Value Description
Execution Speed 40+ MIPS Real-time Xtensa CPU emulation
Display Refresh 60 FPS Hardware-accelerated GPU rendering
Touch Latency <1ms Mouse to XPT2046 driver mapping
Startup Time <1s Instant launch after first build
Supported Boards

CYD Hardware Compatibility

2432S028R

ESP32 • 2.8" 320×240 • XPT2046 touch • Micro-USB

2432S024C

ESP32 • 2.4" 320×240 • XPT2046 touch • USB-C

3248S035C

ESP32 • 3.5" 480×320 • GT911 capacitive • USB-C

4827S043C

ESP32-S3 • 4.3" 800×480 • GT911 capacitive • USB-C

Quick Start

Get Running in 60 Seconds

Clone the repository

bash
git clone https://github.com/levkropp/cyders.git cd cyders

Run the launcher

cmd
run-cyders.bat

The launcher auto-builds demo firmware on first run (~5 minutes). Subsequent runs are instant.

Test the interface

Click anywhere on the display to simulate touch. Check the Touch Log panel for coordinates. Try the interactive LVGL demo with buttons, sliders, and animations.

Architecture

How It Works

Component Stack
// Display Pipeline pixels → Hardware-accelerated pixel buffer winit → Cross-platform windowing wgpu → GPU rendering (60 FPS) // Emulator Core flexe → Xtensa CPU emulator (FFI) dual-core → Full ESP32 simulation peripherals → UART, SD card, NVS, touch // User Interface egui → Immediate-mode GUI panels → Registers, stack, UART output monitoring → Real-time performance metrics

Touch Input Flow

// Event propagation chain Mouse Click TouchState (Rust) C Callback (FFI) XPT2046 Driver (Firmware) LVGL Event Handler
Controls

Keyboard Shortcuts

Key Action
Mouse Click Simulate touch input at cursor position
ESC Quit emulator
P Pause/Resume execution
F10 Toggle info panel visibility