Files
alexandClaude Sonnet 5 168d6a71bd Fix esp32 wait-timing race, rename wc_api.lib, keyboard: Enter-to-advance
esp32.c: two-phase esp_wait_busy() so a stale non-BUSY status right after
esp_cmd() isn't mistaken for completion (fixed a real TRACK_PLAY/0x88 race
on heavier XM files); added single-phase esp_wait_not_busy() for
esp_send_dma()'s per-chunk wait, which never actually sets BUSY and was
timing out on every chunk under the two-phase version.

vgm_wc_api.lib renamed to wc_api.lib (build.bat updated to match).

Keyboard: tried replacing wc_key_esc/pgup/pgdn/space with a raw PS/2-FIFO
reader (matching how VGMPLAY.WMF's own player reads keys) so Enter could
also advance to the next file. Reverted after two confirmed hardware
regressions (esp32 transfers failing with ESP_ERR_INV_XM, and the keyboard
going unresponsive once WC's own PS/2 scanning was disabled to stop it
competing with the raw reads) - VGMPLAY's approach relies on a full custom
interrupt handler xmplay has no equivalent need for. Back to the simple
wc_key_*() wrappers, plus wc_key_enter() so Enter now advances too, and
wc_key_wait_release() (called after wc_gedpl()) to debounce the Enter/F3
that launched the plugin itself.

Also: About window now centers dynamically for all three WC text modes
(90x36/80x25/80x30) instead of a fixed position, and matches the main
window's color scheme.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-07 12:40:36 +03:00

112 lines
2.5 KiB
Plaintext

DEF .__.ABS. 0x0
DEF l__BSEG 0x0
DEF l__BSS 0x0
DEF l__CABS 0x0
DEF l__DABS 0x0
DEF l__GSFINAL 0x0
DEF l__GSINIT 0x0
DEF l__HEADER 0x0
DEF l__HEAP 0x0
DEF s__CABS 0x0
DEF s__DABS 0x0
DEF s__HEADER 0x0
DEF s__HEADER0 0x0
DEF l__INITIALIZED 0x1
DEF l__INITIALIZER 0x1
DEF l__HEADER0 0x3
DEF l__HOME 0x10A
DEF l__CODE 0xF31
DEF l__DATA 0x10B2
DEF s__CODE 0x8003
DEF s__DATA 0xA800
DEF s__INITIALIZED 0xB8B2
DEF s__HOME 0xB8B3
DEF s__GSFINAL 0xB9BD
DEF s__GSINIT 0xB9BD
DEF s__INITIALIZER 0xB9BD
DEF s__BSEG 0xB9BE
DEF s__BSS 0xB9BE
DEF s__HEAP 0xB9BE
DEF _wc_exit 0x8003
DEF _esp_cmd 0x8008
DEF _esp_rd_reg8 0x8021
DEF _esp_rd_reg32 0x803A
DEF _esp_rd_regs 0x80A8
DEF _esp_wr_reg8 0x80D4
DEF _esp_wr_reg32 0x80EB
DEF _esp_wr_end 0x811B
DEF _esp_wait_not_busy 0x812A
DEF _esp_send_dma 0x8171
DEF _esp_rd_end 0x81D2
DEF _esp_wait_status 0x81E1
DEF _esp_wait_busy 0x822F
DEF _esp_create_obj 0x826B
DEF _esp_init 0x8296
DEF _win_xm_tpl 0x82A3
DEF _win_about_tpl 0x82B5
DEF _play_xm 0x8312
DEF _wait_esc_key 0x853E
DEF _wait_frames 0x8546
DEF _wc_screen_width 0x854F
DEF _wc_center 0x855C
DEF _about 0x8592
DEF _unload_and_exit 0x85CC
DEF _leave_playing_and_exit 0x85FD
DEF _wait_for_manual_exit 0x8607
DEF _error_esp 0x8631
DEF _stop_on_error 0x8658
DEF _error_oom 0x8664
DEF _error_playback 0x8697
DEF _copy_file_name 0x86CA
DEF _xm_draw_static_labels 0x86EF
DEF _xm_set_status_attr 0x876E
DEF _xm_set_status 0x87D2
DEF _xm_set_status_code 0x87DA
DEF _put_hex2 0x8892
DEF _put_dec3 0x88CF
DEF _put_time 0x892C
DEF _xm_draw_stats_labels 0x89D9
DEF _draw_progress_bar 0x8A9B
DEF _xm_update_info 0x8B11
DEF _main_start 0x8C8F
DEF _main 0x8D99
DEF __divuchar 0x8DC2
DEF __divu8 0x8DC4
DEF __divu16 0x8DC7
DEF __divuint 0x8DC7
DEF _wc_key_space 0x8DF6
DEF _wc_load512 0x8E00
DEF __moduchar 0x8E15
DEF __moduint 0x8E1C
DEF _wc_prsrw 0x8E21
DEF _wc_prwow 0x8E57
DEF _wc_key_enter 0x8E64
DEF _wc_prm_pl 0x8E6E
DEF _wc_gedpl 0x8E7D
DEF _wc_key_pgdn 0x8E87
DEF _wc_gadrw 0x8E91
DEF _wc_prsrw_attr 0x8EB6
DEF _wc_key_wait_release 0x8EFD
DEF _wc_rresb 0x8F07
DEF _strlen 0x8F14
DEF _wc_key_esc 0x8F20
DEF _wc_key_pgup 0x8F2A
DEF _fs_buf 0xA800
DEF _ret_sp 0xB800
DEF _filesize 0xB802
DEF _file_ext 0xB806
DEF _call_type 0xB807
DEF _last_esp_status 0xB808
DEF _p_file_name 0xB809
DEF _file_name 0xB80B
DEF _total_samples 0xB82C
DEF _xm_handle 0xB830
DEF _last_track_status 0xB831
DEF _win_xm 0xB832
DEF _win_about 0xB844
DEF _bar_attr_ofs 0xB8B0
DEF _state_esp 0xB8B2
DEF __modulong 0xB8B3
DEF __divulong 0xB93A
LOAD obj/out.ihx