Releases: Papipapito/MSXimus
Release list
MSXimus v3.2 — una sola BIOS, y el menú es un ajuste
Una sola BIOS, descargas desde el menú, y el logotipo MSX armándose en la pantalla del C6.
El core no cambia.
MSXimus_v3.2.fses byte a byte el mismo que el de la v3.1: si ya lo tienes grabado, no hace falta regrabarlo. Lo que cambia es el pack de BIOS y el firmware del C6.
Lo nuevo
🎛️ Una sola BIOS, y el menú es un ajuste
Hasta ahora había dos packs y tenías que decidir cuál grabar. Ahora hay uno, y aquella elección es una casilla en Ajustes.
Al encender, la máquina arranca el MSX directamente. Si quieres el navegador de la SD: pulsa S al arrancar, marca «Menu al arrancar» y Save & Restart. Para volver a la salida directa, lo desmarcas. Se guarda en la flash de la placa, así que sobrevive al apagón.
📥 Descargas desde el menú
Con el WiFi puesto, la tecla F en el navegador busca y baja ROMs y discos directamente a la microSD, sin pasar por el PC.
🖥️ Logo de arranque en la pantalla del C6
El logotipo MSX armándose desde los dos lados, como en un MSX2 de verdad. Y el firmware del C6 vive ya en su propio repositorio, ESP32-for-FPGA — el mismo binario sirve al MSXimus y al MSXnano.
Qué grabar, y dónde
Todo va a la flash SPI de la placa, en tres direcciones distintas. Las direcciones no son negociables: si el pack no cae exactamente en 0x400000, el core arranca y se queda en negro.
| # | Fichero | Dirección | ¿Obligatorio? |
|---|---|---|---|
| 1 | MSXimus_v3.2.fs |
0x000000 |
Sí — es el core (sin cambios desde la v3.1) |
| 2 | pack_bios_msximus.bin |
0x400000 |
Sí — sin él no arranca el MSX |
| 3 | yrw801.rom |
0x500000 |
No — solo para MoonSound/OPL4 |
Con el Gowin Programmer, por el USB-C de la placa. Para cada fichero: operación de escritura en la flash SPI externa (las opciones que empiezan por exFlash, no las de SRAM), el fichero en Programming File y la dirección en el campo de dirección de inicio.
Hay dos versiones del mismo pack, y solo cambia el kernel de disco:
| Pack | Nextor |
|---|---|
pack_bios_msximus.bin |
2.1.4 — la estable, la que quieres |
pack_bios_msximus_nextor3.bin |
3.0 beta 1 — para probar la beta |
El ESP32-C6 (WiFi + pantalla) — opcional
Módulo: Waveshare ESP32-C6-LCD-1.3. Cuatro cables entre el conector J10 de la Console y el módulo.
| Pin J10 | Señal | Bola FPGA | ESP32-C6 |
|---|---|---|---|
| 11 | +5 V | — | 5V (tira derecha, el último) |
| 12 | GND | — | GND (tira derecha) |
| 14 | TX (FPGA → C6) | W21 | IO17 — el RX del C6 (tira izquierda) |
| 16 | RX (FPGA ← C6) | N17 | IO16 — el TX del C6 (tira izquierda) |
| 18 | TURBO (FPGA → C6) | N13 | GPIO3 (tira derecha, el primero) — opcional, solo el indicador de turbo |
- J10 es el conector 2×20 libre, el que el esquemático de Sipeed llama SDRAM1 CONN. — no el que lleva el módulo de SDRAM que el core necesita.
- Para identificarlo sin serigrafía: placa apagada y polímetro en continuidad — el pin 12 es el único de todo el conector con paso a masa. Su compañero de fila es el 11 (+5 V), y desde el 12 hacia el lado largo van el 14, el 16 y el 18.
- TX y RX van cruzados. La UART va a 859 372 baudios.
- La alimentación sale del propio J10 (pin 11): el USB-C del C6 solo hace falta para grabarle el firmware.
⚠️ Mejor no tener las dos a la vez.
Grabarlo — por el USB-C del propio C6, a 0x0. Lo más fácil es esptool-js en Chrome o Edge: conectas, eliges el fichero, dirección 0x0, Program. Sin instalar nada.
esptool --chip esp32c6 --port COMx write_flash 0x0 firmware_esp32c6_v3.2_merged.bin
El panel de estado — F12 (opcional)
Sin hardware extra: usa el BL616 que la propia Console ya lleva. Se le graba una vez con el Bouffalo Lab Dev Cube usando flash_prog_cfg.ini, bl616_v3.1.bin y bl616_fpga_partner_60kConsole.bin.
Primer arranque
El menú sale apagado: la máquina entra directa al MSX. Pulsa S, marca Menu al arrancar, Save & Restart.
Sobre las microSD: usa una de marca y Clase 10 (Samsung, SanDisk, Kingston...), formateada en FAT16. Las baratas sin marca leen bien pero pierden escrituras en ráfagas sostenidas — medido en placa. Si las descargas o los guardados fallan, sospecha de la tarjeta primero.
MSXimus v3.1
Un MSX2+ completo en una Tang Console 60K. Validado en placa el 26/08/2026.
🇪🇸 Cómo instalarlo, paso a paso · 🇬🇧 How to install it
🇪🇸 Por qué v3.1 y no v2.2
Porque se movió el suelo. Gowin confirmó que el SSRAM del GW5AT-60B está retirado a propósito por un problema de silicio, y recomendó migrar a BSRAM o a registros todo lo que lo use. La v2.1 tiraba mucho de ese recurso, así que la v3 no es la v2.1 con cosas encima: es el mismo MSX reconstruido para que no quede ni un bit sobre el recurso retirado.
Lo nuevo: panel de estado en F12 pintado por el BL616 que la placa ya lleva (sin cables ni módulo) · se identifica como turboR (S1990) · ratón MSX con un ratón USB con cable · dos BIOS a elegir · el turbo pasa a F11.
🇬🇧 Why v3.1 and not v2.2
Because the ground moved. Gowin confirmed the GW5AT-60B's SSRAM is withdrawn on purpose over a silicon problem, recommending migration to BSRAM or registers. v2.1 leaned on it heavily, so v3 is not v2.1 with features on top: it is the same MSX rebuilt so that not one bit lives on the withdrawn resource.
What's new: status panel on F12, painted by the BL616 already on the board (no wires, no module) · identifies as a turboR (S1990) · MSX mouse from a wired USB mouse · two BIOSes to choose from · turbo moves to F11.
Qué flashear · What to flash
A la flash SPI de la placa con el Gowin Programmer · To the board's SPI flash with the Gowin Programmer:
| Fichero · File | Dirección · Address | |
|---|---|---|
MSXimus_v3.1.fs |
0x000000 |
el core · the core |
pack_bios-MSX_msximus.bin o/or pack_bios-Menu_msximus.bin |
0x400000 |
elige una · pick one |
yrw801.rom |
0x500000 |
opcional: MoonSound/OPL4 |
Apaga y enciende después de flashear. Un reset no basta: la DDR3 recalibra en frío. Si sale pantalla azul y nada más, casi siempre es el pack en la dirección equivocada.
Power-cycle after flashing. A reset is not enough: the DDR3 recalibrates cold. A blue screen and nothing else is almost always the pack at the wrong address.
Las dos BIOS · The two BIOSes
Deciden qué hace la máquina al encenderla, y se cambian regrabando ese único fichero.
They decide what the machine does on power-up, and you swap them by reflashing that one file.
| Pack | Toca la SD · Touches the SD | |
|---|---|---|
pack_bios-MSX |
Logo y arranca el MSX. S = ajustes, W = WiFi. · Logo, then straight into the MSX. S = settings, W = WiFi. |
No |
pack_bios-Menu |
Lo mismo + navegador de la SD y lanzador de ROM/DSK. · The same, plus an SD browser and a ROM/DSK launcher. | Solo lectura · Read-only |
Si no lo tienes claro, empieza por pack_bios-MSX · If you are not sure, start with pack_bios-MSX.
El panel de F12 · The F12 panel (BL616 — opcional · optional)
Lo pinta el BL616 que la placa ya lleva: ni cables, ni módulo. Sin esto el MSX funciona igual, simplemente no tendrás el panel.
Painted by the BL616 already on the board: no wires, no module. Without it the MSX works exactly the same, you just won't have the panel.
- BOOT pulsado MIENTRAS enchufas el USB (modo ISP) · Hold BOOT while plugging in the USB (ISP mode)
- Abre BLDevCube y carga
flash_prog_cfg.ini, que ya trae las dos imágenes y sus direcciones (0x0y0x40000) · Open BLDevCube and loadflash_prog_cfg.ini, which already carries both images and their addresses - Deja el
.inien la misma carpeta quebl616_fpga_partner_60kConsole.binybl616_v3.1.bin· Keep the.iniin the same folder as both.binfiles
Las dos imágenes conviven: la de Sipeed no se borra. Y el modo ISP vive en la ROM del chip, así que por aquí no se puede dejar la placa inservible.
Both images coexist: Sipeed's is not erased. And ISP mode lives in the chip's ROM, so you cannot brick the board this way.
WiFi (ESP32-C6 — opcional · optional)
firmware_esp32c6_unapi_merged.bin a 0x0, por el USB-C del módulo. Lo más fácil, sin instalar nada: esptool-js.
firmware_esp32c6_unapi_merged.bin at 0x0, through the module's own USB-C. The easy way, nothing to install: esptool-js.
MSXimus v2.1.2 — las ocho curas del V9968 (build _191)
Integra las ocho curas del motor de comandos del V9968 y el sincronizador de cpu_run al dominio de 108 MHz.
Validado en placa: V9968DM, MSX-DOS, dual SCC, OPL4, Metal Gear y Dragon Quest 2.
Flasheo
MSXimus_v2.1.2_191.fs→ flash, offset 0. Power-cycle tras grabar.MSXimus_v2.1.2_191_jtag.bin→ la pareja para cargar por JTAG sin grabar la flash.
Lo demás no cambia
El pack de BIOS, el wavetable del OPL4 y el firmware del ESP32-C6 son los mismos de la v2.1. Solo hay que regrabarlos si vienes de una versión anterior.
Consejo: para probar, usa un cable USB de solo corriente. El del PC úsalo únicamente para flashear.
v2.1
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.
MSXimus v2.0 — V9968 + WiFi (build _157)
MSXimus v2.0 — el corazón nuevo: VDP V9968 + WiFi
La actualización más grande del MSXimus hasta la fecha. El core estrena el V9968 de HRA! (t.hara) — el VDP MSX2+ extendido con 128KB de VRAM servidos desde la DDR3 del SOM — y conectividad WiFi con pantalla LCD vía un ESP32-C6 externo.
Novedades
- 🎨 VDP V9968 (HRA!): modos extendidos, 16 sprites/línea, comandos acelerados — corre la demo DEVCON y el software V9968 existente (generación de registros R#20/21 "clásica", ver README)
- 🧠 VRAM en la DDR3 del SOM — e incluye la corrección de un fallo serio heredado: la configuración de referencia de la comunidad nunca refrescaba la DRAM (los datos estáticos se corrompían en segundos-minutos). Diagnosticado con herramientas propias y curado en esta release
- 📶 WiFi + pantalla: ESP32-C6 (Waveshare C6-LCD-1.3) por 3 cables al bus J10 — menú WiFi, descargas y LCD de estado (cableado exacto en el README; preparado un 4º hilo para el indicador de turbo)
- 🔧 Fixes portados del upstream vivo de HRA!: bit VR de S#2 al ciclo (la MSX Diagnostics ya no nos toma por TMS9918), S#10 ya no borra la interrupción de fin de comando, período del blink según datasheet
- 🐛 Cazado y arreglado un bug histórico del puerto de lectura de VRAM (lectura secuencial rápida podía saltarse un byte, ~0,1-0,3%)
- 🌀 Control de ventilador por temperatura con histéresis
- 🧪 Herramientas de diagnóstico nuevas (VRAMSOAK/VRAMSOK2: test de retención de VRAM con clasificación de errores)
Flasheo (Gowin Programmer, External Flash)
| Fichero | Dirección |
|---|---|
MSXimus_v2.0.fs |
0x000000 |
| Pack de BIOS (lo generas tú — ver README) | 0x400000 |
yrw801.rom (wavetable OPL4, lo aportas tú) |
0x500000 |
⚡ Apaga y enciende la placa tras flashear (power-cycle completo, no solo reset).
Hardware
Sipeed Tang Console 60K + 1 módulo SDRAM del dock. Opcional: disipador 20×20 mm (como estos), ventilador 20×20 mm con conector JST de 1,25 mm (como este) — gobernado por temperatura — y un ESP32-C6 para el WiFi (pantalla opcional). Detalles en el README (EN/ES).
Limitaciones conocidas y créditos
En el README — con la lista honesta de lo que queda (el logo MSX2+ glitchea medio segundo, líneas sueltas en las demos más exigentes) y los agradecimientos a toda la gente sobre cuyo trabajo se construye esto. Este proyecto no se vende (el V9968 es no-comercial por licencia de su autor).
MSXimus v1.1 — v9958 estable (build _116)
Version ESTABLE conocida-buena del MSXimus sobre el core V9958 clasico: imagen y AUDIO validados en hardware (Tang Console 60K).
Contenido de la build _116 (2026-07-16):
- Fix de PANPOT del motor wave MoonSound (upstream srg320 5379b34): la imagen estereo con paneos queda correcta.
- Todo lo consolidado hasta la _115: MoonSound completo (OPL4 FM + wavetable), Y8950+ADPCM, SCC, turbo, MixCalc canon, telemetria de video.
Flasheo:
msximus_60k_20260716_116.fs→ flash 0x000000 (bitstream)- Pack de BIOS/menu v5 → flash 0x200000 (no incluido en la release por copyright: es
files/20260711/goauld_rom_int.bin, MD549de579bb62ee8958d62ad5c7a3b9926) - YRW801 (2MB, wavetable OPL4) → flash 0x500000 (no incluida, copyright)
La linea V9968 (MSX2+ extendido) sigue en desarrollo en la rama th9958.
🤖 Generated with Claude Code