st_niccc_msx2

ST-NICCC MSX2 V35 — OXYGEN hold + continuing MoonSound music

Release basis: V34/V27 SCREEN4 graphics path, ASCII16-X 8 MiB ROM, MoonSound/OPL4.

V35 ending behaviour

Validation

Tested with openMSX 21, Philips NMS8250 + MoonSound, PAL timing.

Important V35 RAM-layout fixes

V35 is larger than V34. Two inherited RAM assumptions had to be corrected:

  1. The private stack was moved from F300h to F37Fh, above the enlarged kernel while staying below the F380h MSX work-area boundary.
  2. The V34 startup scratch buffer at F200h-F2FFh was removed. In V35 that range contains the tail of the enlarged directory/palette data. Emergency VRAM pages are now cleared directly at startup instead.

The second issue was the cause of the deterministic frame-1723 failure in an intermediate V35 build; the release build includes the fix and reaches the postlude correctly.

Build

From SOURCE/:

python3 build_msx2_rom_v35_oxygen_musicloop.py

Python requires NumPy and SciPy. The builder uses only files included in SOURCE/ and produces:

ST_NICCC_MSX2_50FPS_V35_OXYGEN_MUSICLOOP_ASCII16X_8MB.rom

The generated ROM must match the SHA-256 in SHA256SUMS.txt.

INPUTS/ contains the original ST-NICC source archive and checknobankh.mod used by the project. AUDIO_SOURCE/ contains the 60-second semantic audio intermediate and EVT1 codec used when deriving the compact post-demo event assets. The release builder itself consumes the already-generated exact audio assets under SOURCE/.

Browser player and GitHub Pages

WebMSX is pinned as the webmsx/ Git submodule. Clone with git clone --recurse-submodules https://github.com/niekvlessert/st_niccc_msx2.git, or run git submodule update --init --recursive after a normal clone.

.github/workflows/ci.yml verifies all three release ROM copies against the release SHA-256, then packages the player, ROM, and WebMSX 6.0 embedded runtime. Pull requests validate the artifact; pushes to main and manual runs on main deploy it to GitHub Pages. In repository Settings → Pages, select GitHub Actions as the publishing source. The expected URL is https://niekvlessert.github.io/st_niccc_msx2/.

The player selects PAL MSX2 (MSX2E), forces the ASCII16X mapper, and enables the OPL4 preset for MoonSound. Click the emulator to unlock browser audio. The workflow publishes the verified release ROM; it does not rebuild the ROM.

To preview locally:

python3 scripts/build_pages.py
python3 -m http.server 8000 --directory _site

Open http://localhost:8000/. The old/ directory, Python bytecode, macOS metadata, and generated _site/ files are excluded from Git.