velxio/backend
David Montero Crespo d3f9f7aa99 perf(esp32): batch SPI to the worker + gate CS crossings (Doom ~30x)
Worker side of the libqemu picsimlab_spi_event_batch / CS-gating change:

- _on_spi_batch(): replay a whole SPI transfer in bulk (custom-chip runtime,
  then ePaper feed, then the spi_batch buffer) instead of one _on_spi_event per
  byte. Registered as a trailing _SPI_BATCH field of _CallbacksT.
- _sync_cs_events(): disable SPI chip-select callbacks for pure-display sims,
  enable them when an ePaper / custom-chip SPI slave is registered (no-op on
  older libqemu without qemu_picsimlab_enable_spi_cs_events).
- _on_pin_change(): flush the SPI batch before each gpio_change so the byte
  stream stays ordered against the DC pin now that CS no longer triggers the
  flush.

Backward compatible: an older libqemu never calls the batch callback or the CS
setter, so it just keeps the per-byte path. esp32-doom: 0.04 -> ~1.0-1.5 FPS
wall-clock (~26-37x), render verified correct.
2026-06-03 23:23:04 -03:00
..
app perf(esp32): batch SPI to the worker + gate CS crossings (Doom ~30x) 2026-06-03 23:23:04 -03:00
scripts feat: persist multi-board projects + add auto-save 2026-05-01 13:43:33 -03:00
sdk feat(chips): programmable retro CPU chips with external ROM 2026-05-18 23:38:18 -03:00
tests feat(compile): ESP-IDF compile options + request dedup 2026-05-18 21:50:45 -03:00
.env.example chore(oss): drop dead auth/DB dependencies from OSS image 2026-05-14 17:06:27 -03:00
Dockerfile fix(arduino-cli): pin ATTinyCore to 1.4.1 (azduino.com micronucleus host unreachable) 2026-05-22 15:15:53 +02:00
debug_qemu.py
mcp_server.py
mcp_sse_server.py
requirements.txt feat(sim): boot_images module + Pi 3 emulation restored 2026-05-16 05:41:46 +02:00