Each screen now plays its own looping MSX-Music (YM2413/OPLL) track:
title, hints, gameplay, and victory. Tracks are lVGM files embedded in
banked segments 26-29 (one per segment, each < 8KB so it never crosses a
boundary); segments 30-31 remain free.
- project_config.js: add psg/msx-music/vgm/lvgm_player modules; set
EmulMSXMusic so ./build.sh run gives openMSX the FM-PAC (-ext fmpac).
- msxgl_config.h: enable LVGM_USE_PSG/MSXMUSIC (rest off), PSG_DIRECT.
- mazegame.c: MSXMusic_Initialize() once at boot; PlayTrack()/PlayFrame()
bracket every player call with a bank-2 save/restore so music never
disturbs the tile/sprite banking; a PlayFrame() follows every Halt() in
the wait/animation loops (ScrollDraw, input loops now frame-synced,
WaitKeySequence) to advance each track at 60 Hz. Logo stays silent.
- CLAUDE.md: document the music pipeline, banking protocol, and segments.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>