Files
mazegame/projects/mazegame/project_config.js
T
jurjen.ladeniusandClaude Opus 4.8 1c0636e8ff Add per-screen FM music (lVGM / MSX-Music)
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>
2026-07-03 20:43:18 +02:00

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;