Skip to content

v2.1

Choose a tag to compare

@Papipapito Papipapito released this 03 Aug 20:00

MSXimus v2.1 brings the V9968 fully up to date and rounds off the audio and the picture.

What's new

  • The V9968, at its latest — the core now carries HRA!'s most recent published revision of the VDP: the new R#20/R#21 register map (V9958-compatible out of reset), per-sprite palette sets in sprite mode 2 (EPAL) and the command-end interrupt.
  • Remastered audio — a new gain structure calibrated against real hardware and openMSX: DC blocking on the PSGs, revised per-chip balance, a soft-knee limiter, and a master volume you set from the MSX itself (OUT &H44,n, 0–7), saved to flash. The MoonSound/OPL4 plays at its reference level.
  • MSX-Audio with 256 KB — the Y8950's sample RAM grows from 32 to 256 KB, the maximum the real chip can address.
  • A picture closer to a CRT — the border is visible on all four sides, every pixel comes out uniform (exact integer scaling) and the centering has been fine-tuned.
  • Full 2 MB ASCII16 megaROMs — Aleste 2 and friends, complete.
  • Rock-solid memory — the SDRAM refreshes autonomously and the V9968's CPU port honours /WAIT: solid behaviour under any load, from cold boot to the heaviest demo.
  • ESP32-C6 firmware in the repo — the WiFi module's firmware now lives in esp32_c6/, with the J10 pinout documented.

Installing

Flash the .fs to the SPI flash at 0x000000 (your BIOS pack goes at 0x400000, yrw801.rom at 0x500000) and power-cycle the board — a reset is not enough. Full instructions in the README.

If you use the WiFi module, flash firmware_esp32c6_unapi_merged.bin to the ESP32-C6 through its own USB-C port:

esptool --chip esp32c6 --port COMx write_flash 0x0 firmware_esp32c6_unapi_merged.bin

This build shows the MSXimus boot logo on the module's LCD; its full source lives in esp32_c6/.

A note on older V9968 software

This release adopts the V9968's current register map. V9968 demo binaries compiled against the old map (they write R#20 = 0xFF) will misbehave on any core carrying the new map — use builds updated for the current register layout.