Stage 1 (shop scene, customer, siphon brew minigame, serve loop) and the M2 day spine: day counter, three-phase day, event-driven clock, journal line, and a SaveState with magic/version/checksum. Saving to disk is NOT working yet. A cartridge ROM can reach the Disk ROM only from RAM (both PHYDIO and CALSLT switch page 1 out from under the caller), and ROMDelayBoot is required so the Disk ROM's INIT runs at all. With both in place the disk is detected, but sector I/O returns carry-clear without transferring — proven with a sentinel. Probe now verifies the buffer actually changed, so a non-working disk degrades to "no save" rather than corrupting anything. Full findings in the project CLAUDE.md. Also documented: keyboard reads need interrupt protection (the BIOS ISR scans the matrix too), and BankedCall must stay off until banked data exists. Docs: PLAN.md (ten milestones, per-stage requirements, decision queue), SCRIPT.md (all four character arcs, 60 beats, checked against the 26-character box), and amendment notes in DESIGN.md. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
36 lines
1.4 KiB
JavaScript
36 lines
1.4 KiB
JavaScript
// Kissaten Yūgure - MSXgl project configuration
|
|
// MSX2 · SCREEN 5 · ASCII16 MegaROM (see docs/DESIGN.md §5)
|
|
|
|
// ASCII-safe name: used for output filenames (ROM, symbols, intermediates)
|
|
ProjName = "kissaten";
|
|
ProjModules = [ ProjName ];
|
|
LibModules = [ "system", "bios", "vdp", "print", "input", "memory", "math" ];
|
|
|
|
Machine = "2";
|
|
|
|
// ASCII16 MegaROM from day one: dialogue, portraits and music banks will not
|
|
// fit in 32KB (DESIGN.md §5). 16KB segments; segments 0-1 are the fixed main
|
|
// code at 4000h~BFFFh, segments 2+ are banked data (dialogue, art, music).
|
|
Target = "ROM_ASCII16";
|
|
ROMSize = 128;
|
|
ROMMainSegments = 2;
|
|
// Enable when banked data/code actually lands (stage 3 dialogue banks);
|
|
// with it on from day one, RAM globals were getting corrupted at runtime.
|
|
BankedCall = false;
|
|
|
|
CheckVersion = true; // MSX2 required (SCREEN 5, V9938 commands)
|
|
AddROMSignature = true;
|
|
|
|
// Required for disk saving. A cartridge's INIT normally runs *during* the BIOS
|
|
// slot scan and MSXgl never returns from it, so the Disk ROM's own INIT never
|
|
// happens — NMBDRV stays 0 and the PHYDIO hook is never patched. This option
|
|
// instead installs an H.STKE hook and returns to the scan, so the game starts
|
|
// after the disk system is up. Boot takes visibly longer as a result.
|
|
ROMDelayBoot = true;
|
|
|
|
AppSignature = true;
|
|
AppCompany = "JL";
|
|
AppID = "KY";
|
|
|
|
Verbose = true;
|