Fix esp32 detection, add colored caption, live stats, single-loop playback

- Fix state_esp init bug: crt0.s never runs GSINIT and hex2bin fills
  unbacked memory with 0xFF (not 0), so a plain zero-init global always
  read 0xFF on load; give it a real 0xFF sentinel initializer instead.
- Vendor demyanenko-d/VGMPLAY.WMF's wc_api library (SDCC 4.6.0 +
  --sdcccall 1) instead of hand-rolled PRSRW/PRIAT wrappers, which
  corrupted esp32 file loading in three different shapes; colored "File:"
  caption now works.
- Trim shared-file footprint: vendor only the esp32.c functions actually
  used, drop unused sdklib.h/sdk.lib linkage.
- Re-enable periodic live stats (Pattern/Row/BPM/Time/progress bar).
- Limit playback to one loop via TRACK_SET_PARAMS/MAX_LOOP_COUNT, and
  auto-advance to the next file when a track finishes on its own
  (detected via a PLAYING->STOPPED ESP_REG_TRACK_STATUS transition).
- Pin the Z80 clock to 14MHz for the whole plugin lifetime so esp32 SPI
  wait-loop timeouts (raw iteration counts, not real time) don't depend
  on whatever turbo setting was active before the plugin started.
- Pad TRACK_INIT's timeout well past the firmware's 5s song-length
  measurement cap (XM_MEASURE_MAX_US).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-30 21:40:24 +03:00
co-authored by Claude Sonnet 5
parent 6163d0c8ca
commit ee64fb85a9
16 changed files with 3455 additions and 2802 deletions
+1 -1
View File
@@ -79,7 +79,7 @@
00000022 01 79 .db #0x01 ; 1
00000023 00 80 .db #0x00 ; 0
00000024 00 81 .db #0x00 ; 0
00000025 1D 82 .db #0x1d ; 29
00000025 1E 82 .db #0x1e ; 30
00000026 00 83 .db 0x00
00000027 00 84 .db 0x00
00000028 00 85 .db 0x00