Skip to content

Releases: Papipapito/MSXimus

MSXimus v3.2 — una sola BIOS, y el menú es un ajuste

Choose a tag to compare

@Papipapito Papipapito released this 04 Sep 16:01

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.fs es 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.

⚠️ Al terminar, apaga y enciende la placa. Un reset no basta: la DDR3 necesita recalibrar desde frío.

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

Choose a tag to compare

@Papipapito Papipapito released this 26 Aug 17:16

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.

  1. BOOT pulsado MIENTRAS enchufas el USB (modo ISP) · Hold BOOT while plugging in the USB (ISP mode)
  2. Abre BLDevCube y carga flash_prog_cfg.ini, que ya trae las dos imágenes y sus direcciones (0x0 y 0x40000) · Open BLDevCube and load flash_prog_cfg.ini, which already carries both images and their addresses
  3. Deja el .ini en la misma carpeta que bl616_fpga_partner_60kConsole.bin y bl616_v3.1.bin · Keep the .ini in the same folder as both .bin files

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.

⚠️ No cambia desde la v2.1.2 (byte a byte el mismo). Si ya lo tienes flasheado, no lo toques.
⚠️ Unchanged since v2.1.2 (byte for byte). If you already have it, leave it alone.

MSXimus v2.1.2 — las ocho curas del V9968 (build _191)

Choose a tag to compare

@Papipapito Papipapito released this 08 Aug 08:44

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

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.

MSXimus v2.0 — V9968 + WiFi (build _157)

Choose a tag to compare

@Papipapito Papipapito released this 27 Jul 16:50

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)

Choose a tag to compare

@Papipapito Papipapito released this 22 Jul 07:18

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, MD5 49de579bb62ee8958d62ad5c7a3b9926)
  • 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