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>
23 lines
626 B
JavaScript
23 lines
626 B
JavaScript
// MSX2 Maze Game - MSXgl project configuration
|
|
|
|
ProjName = "mazegame";
|
|
ProjModules = [ ProjName ];
|
|
LibModules = [ "system", "bios", "vdp", "input", "psg", "msx-music", "vgm/lvgm_player" ];
|
|
|
|
Machine = "2P";
|
|
Target = "ROM_KONAMI_SCC";
|
|
ROMSize = 256;
|
|
ROMMainSegments = 2;
|
|
BankedCall = true;
|
|
|
|
AddROMSignature = true;
|
|
AppSignature = true;
|
|
AppCompany = "MZ";
|
|
AppID = "01";
|
|
|
|
// The screen music is MSX-Music (YM2413/OPLL). Give openMSX the FM-PAC extension
|
|
// so `./build.sh run` has an FM chip (real MSX2+ machines have MSX-Music built in).
|
|
EmulMSXMusic = true;
|
|
|
|
Verbose = true;
|