Стандартный ftview сам регистрируется на .XM/.XMZ - те же расширения,
что и xmplay. Таблица "расширение -> плагин" в WC статическая, так что
при совместной установке они конфликтуют. Нужно использовать
переработанную версию ftview (расширения убраны):
https://git.alexkorochinskiy.ru/alex/ftview.git
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- 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>