v0.4.1: QEMU display
Highlights
The QEMU backend gained a display (tier 2)
A qemu-backed target whose firmware is built against Espressif's esp_lcd_qemu_rgb component now renders into esprite's framebuffer via QMP screendump:
- New target
qemu_esp32c3_rgb(320x240 virtual RGB panel).screenshot,serve --shot, and the live--windowwork exactly as on native targets - the bezel window shows the real emulated guest's pixels, refreshed at 10 Hz. - Draw full frames in cooperating firmware: the virtual panel consumes one pending draw per host-side capture, so per-line drawing stalls headless. The bundled fixture (
tools/qemu/rgb_demo) shows the pattern. - New error kind
capture_failed(exit 9) for a screendump or decode failure after boot.
Qemu targets are data, not code
Board specs live in targets/qemu/*.json (key, machine, arch, optional display dimensions) and ship inside the binary. ESPRITE_QEMU_BOARD=/path/to/board.json registers your own qemu board at runtime, no rebuild. The serial-only qemu_esp32c3 target is unchanged in behavior, now defined by data.
More
- Gated end-to-end display tests against a scripted
esp_lcd_qemu_rgbfixture image (make qemu-fixtures); the default build and tests still never require QEMU. - A qemu boot now records the active target, so board-aware capability gating works identically across backends.
Binaries below carry the generic native targets (sample_gfx, cyd, cyd_tft) plus both qemu board specs; the waveshare_amoled_18 target needs a source build against a firmware checkout (see README). esprite is alpha software; interfaces may change.