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
@@ -20,7 +20,7 @@ T 0C 00 00 00 00 00 00 00 57 69 6C 64 43 6F 6D 6D
R 00 00 00 00
T 18 00 00 00 61 6E 64 65 72 4D 44 4C 07 00 01 00
R 00 00 00 00
T 24 00 00 00 00 1D 00 00 00 00 00 00 00 00 00 00
T 24 00 00 00 00 1E 00 00 00 00 00 00 00 00 00 00
R 00 00 00 00
T 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
R 00 00 00 00