Placa FPGA Sipeed Tang Console 60K, la base del MSX2+ MSXimus

MSXnano v2.0 y MSXimus v3.2: ratón MSX, una sola BIOS y descargas desde el menú


🎉 Dos versiones nuevas a la vez

Salen MSXnano v2.0 y MSXimus v3.2 el mismo día, y no es casualidad: las dos máquinas comparten desde hoy la misma BIOS y el mismo firmware para el módulo WiFi. Lo que se arregla en una, se arregla en la otra.

Si es tu primera vez por aquí: el MSXnano convierte una Sipeed Tang Nano 20K en un MSX2+ completo, y el MSXimus hace lo mismo con la Tang Console 60K, más potente. Z80, VDP con salida HDMI, sonido SCC y OPLL, lector SD con Nextor y WiFi opcional — todo en hardware real, sin emulador y sin necesitar un MSX original.

🕹️ MSXnano v2.0: fuera el BL616, entra una RP2040

Es el titular de la versión. El teclado y los mandos USB los servía hasta ahora el BL616 que la Tang Nano lleva soldado — y en las placas fabricadas desde 2024 (marcadas 3921) ese chip a menudo no arrancaba: te quedabas sin teclado y había que comprar un M0S Dock aparte.

Eso se acabó. Ahora manda una RP2040 (Pico Zero) conectada con un solo cable. Todas las placas se comportan igual, sean del año que sean.

Y de regalo, lo que el BL616 nunca dio: ratón MSX. Enchufas un ratón USB a la Pico y el software MSX ve un ratón MSX de verdad.

🎛️ Una sola BIOS, y el menú es un ajuste

Esto vale para las dos máquinas. Antes había dos packs de BIOS y tenías que decidir cuál grabar: uno arrancaba el MSX directamente, el otro traía el navegador de la tarjeta. Cambiar de idea significaba volver a grabar.

Ahora hay uno solo, y aquella elección es una casilla:

  1. Enciende y pulsa S mientras sale el logo.
  2. Marca «Menu al arrancar».
  3. Save & Restart.

Ya está. Para volver a la salida directa al MSX, lo desmarcas. La elección se guarda en la flash de la placa, así que sobrevive al apagón.

Pantalla de Ajustes del MSXnano con la opcion Menu al arrancar activada y la version de FPGA 2.0
La pantalla de Ajustes: ahí está la casilla, y abajo la versión del core

📥 Descargas de ROMs sin PC

Con el WiFi puesto y el menú encendido, la tecla F abre el buscador: escribes un nombre, eliges de la lista y el fichero baja directamente a la microSD. Ni sacar la tarjeta, ni encender el ordenador.

El menu del MSXnano descargando la ROM GRADIUSN.ROM de internet a la tarjeta SD
Bajando una ROM a la tarjeta, sin PC de por medio

🖥️ Pantalla opcional, y logo de arranque

Las dos máquinas admiten un ESP32-C6 con pantalla de 240×240 que muestra el estado del WiFi, la hora y si el turbo está activo. En esta versión estrena el logotipo MSX armándose desde los dos lados, como en un MSX2 de verdad.

Si solo quieres WiFi y te da igual la pantalla, en el MSXnano sigue valiendo un ESP-01S, que es más barato y más pequeño.

Logo MSX en la pantalla del modulo ESP32-C6, como en el arranque de un MSX2
El logo MSX en la pantalla del C6, como en un MSX2
Pantalla del modulo ESP32-C6 del MSXnano: WiFi conectado, SSID, RSSI, modo Normal 3.58 MHz, uptime y temperatura
La pantalla del C6: WiFi, cobertura, modo de CPU, uptime y temperatura

⚙️ MSXimus v3.2

La Console 60K se pone al día con todo lo anterior: la BIOS única con el menú activable, las descargas desde el propio menú y el logo animado en la pantalla del C6. Y estrena también el pack con Nextor 3.0 beta 1, para quien quiera ir probando lo que viene.

💿 El pack de BIOS: dos versiones del mismo

El pack lleva dentro las ROMs de sistema del MSX y el kernel de disco Nextor. Hay dos versiones y solo cambia el Nextor:

PackNextorPara quién
pack_bios_<máquina>.bin2.1.4La estable. Es la que quieres salvo que sepas por qué no.
pack_bios_<máquina>_nextor3.bin3.0 beta 1Para probar la beta de Nextor 3. Cambian cosas de fondo y no todo está rodado.
Ojo: el pack contiene ROMs de sistema del MSX con copyright, así que no se distribuye con el código. Se monta con tus propios dumps.

⚡ Instalación

Todo va a la flash SPI de la placa con el Gowin Programmer, por el USB-C. Para cada fichero: operación de escritura en la flash 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.

MSXnano (Tang Nano 20K)

#FicheroDirección¿Obligatorio?
1msxnano_v2.0.fs0x000000Sí — es el core
2Pack de BIOS0x200000Sí — sin él no arranca
3rp2040_keyboard.uf2Sí, si quieres teclado

El paso 3 no usa el Gowin: mantienes pulsado BOOTSEL, enchufas la Pico y arrastras el fichero a la unidad RPI-RP2 que aparece. Usa rp2040_keyboard.uf2 para la Waveshare RP2040-Zero (la habitual) o rp2040_keyboard_pico.uf2 para una Raspberry Pi Pico normal.

MSXimus (Tang Console 60K)

#FicheroDirección¿Obligatorio?
1MSXimus_v3.2.fs0x000000Sí — es el core
2Pack de BIOS0x400000Sí — sin él no arranca
3yrw801.rom0x500000No — solo para MoonSound/OPL4
Las direcciones no son negociables. Fíjate en que el pack va a 0x200000 en el MSXnano pero a 0x400000 en el MSXimus. Si cae en el sitio equivocado, la máquina arranca y se queda en negro, sin ningún mensaje que te lo diga.

Y en el MSXimus, al terminar de grabar, apaga y enciende: un reset no basta, porque la DDR3 necesita recalibrar desde frío.

🔌 Conectar el ESP32-C6

Es opcional: sin él la máquina funciona igual, solo que sin WiFi. El módulo es una Waveshare ESP32-C6-LCD-1.3, y el firmware es el mismo binario para las dos máquinas. Cambian los pines de la FPGA.

En el MSXnano

ESP32-C6Tang Nano 20KSeñal
GPIO17 (RX)pin 27FPGA → C6
GPIO16 (TX)pin 28C6 → FPGA
GPIO3pin 29Indicador de turbo
GNDGNDMasa común

Si prefieres el ESP-01S (solo WiFi, sin pantalla): su RX al pin 27, su TX al pin 28, más 3,3 V y masa.

En el MSXimus

Aquí va al conector J10, el 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.

Pin J10SeñalESP32-C6
11+5 V5V (tira derecha, el último)
12GNDGND (tira derecha)
14TX (FPGA → C6)IO17, el RX del C6 (tira izquierda)
16RX (FPGA ← C6)IO16, el TX del C6 (tira izquierda)
18TURBO (FPGA → C6)GPIO3 (tira derecha, el primero)
Truco para identificar los pines sin serigrafía: con la placa apagada y el 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.

La alimentación sale del propio J10 (pin 11): el USB-C del C6 solo hace falta para grabarle el firmware — y mejor no tener las dos alimentaciones a la vez. TX y RX van cruzados, como siempre.

Grabar el C6: lo más fácil es esptool-js, el grabador web del propio Espressif, en Chrome o Edge: conectas por el USB-C del módulo, eliges el fichero, pones la dirección 0x0 y le das a Program. Sin instalar nada.

⌨️ Las teclas

Al encender

TeclaQué hace
SAjustes — aquí se enciende y se apaga el menú
WConfiguración del WiFi
nadaArranca el MSX (o el menú, si lo has activado)

En el navegador de la tarjeta

TeclaQué hace
Arriba / AbajoMoverse (Izquierda / Derecha = página entera)
RETURN o botón AAbrir carpeta o lanzar la ROM
BACKSPACE o botón BCarpeta anterior
R / D / AFiltrar: solo ROM, solo DSK, o todo
TABCambiar de partición
FBuscar y descargar online
HEsta misma ayuda, en pantalla
ESCSalir al MSX / MSX-DOS
Navegador de la tarjeta SD del MSXnano con el filtro de tipo y la barra de teclas
El navegador, con el filtro arriba y las teclas en el pie

Al lanzar una ROM

RETURN lanza · M cambia el mapper si la detección no acierta · S activa la SRAM (solo en ASCII8/16) · ESC vuelve.

Pantalla de lanzar ROM del MSXnano con el nombre del fichero, el tamano y el mapper detectado
Antes de lanzar: tamaño, mapper detectado y barra de carga

El teclado del MSXnano

Con la RP2040 nueva, las teclas especiales del MSX quedan así:

Tecla MSXEn tu teclado USB
GRAPHAlt izquierdo, o cualquiera de las dos teclas Windows
CODE / KANAAlt derecho
STOPF12, o Bloq Despl
SELECTFin
CAPSBloq Mayús
F6F10F6–F10, que se mandan como MAYÚS+F1..F5 igual que en un MSX real

El turbo ya no es una tecla: se activa desde Ajustes (Boot Turbo) o desde software, por los puertos Panasonic. En el MSXimus, además, F12 abre un panel de estado sobre la imagen, con el MSX congelado debajo.

📚 Dónde está cada cosa

Los README de cada repositorio son la documentación de referencia, y se han reescrito enteros para esta versión: fuera los historiales de fallos antiguos, dentro los pines y las instrucciones que hacen falta de verdad.

RepositorioQué encontrarás
MSXnanoEl core de la Tang Nano 20K, los tres cableados con sus pines, la tabla de flasheo y el mapa de teclado
MSXimusEl core de la Console 60K, el conector J10 al detalle, el panel de F12 y el V9968
ESP32-for-FPGAEl firmware del módulo WiFi, común a las dos máquinas

Todo es abierto: los cores bajo GPLv3 y el firmware del ESP bajo LGPL-2.1, derivado del excelente trabajo de ducasp.

👉 Descargas

MSXnano v2.0 · MSXimus v3.2

Si vienes de una versión anterior, regraba el pack de BIOS aunque no toques el core: el menú nuevo va ahí dentro. Y en el MSXnano, si tenías el BL616 haciendo de teclado, ahora necesitas la Pico.

🎉 Two new releases at once

MSXnano v2.0 and MSXimus v3.2 land on the same day, and that is no coincidence: from today both machines share the same BIOS and the same firmware for the WiFi module. Fix something in one, and it is fixed in the other.

New here? The MSXnano turns a Sipeed Tang Nano 20K into a full MSX2+, and the MSXimus does the same on the beefier Tang Console 60K. Z80, VDP with HDMI output, SCC and OPLL sound, an SD reader with Nextor and optional WiFi — all in real hardware, no emulator and no original MSX needed.

🕹️ MSXnano v2.0: the BL616 is out, an RP2040 is in

This is the headline. The USB keyboard and gamepads used to be served by the BL616 soldered onto the Tang Nano — and on boards made since 2024 (marked 3921) that chip often would not start: you were left with no keyboard and had to buy a separate M0S Dock.

That is over. An RP2040 (Pico Zero) now does the job over a single wire. Every board behaves the same, whatever year it was made.

And it brings what the BL616 never did: an MSX mouse. Plug a USB mouse into the Pico and MSX software sees a real MSX mouse.

🎛️ One BIOS, and the menu is a setting

This applies to both machines. There used to be two BIOS packs and you had to pick which one to flash: one booted straight into the MSX, the other brought the card browser. Changing your mind meant flashing again.

Now there is one, and that choice is a tick box:

  1. Power on and press S while the logo is showing.
  2. Tick «Menu al arrancar».
  3. Save & Restart.

Done. Untick it to go back to booting straight into the MSX. The choice is stored in the board’s flash, so it survives a power cycle.

MSXnano Settings screen with Menu al arrancar enabled and FPGA version 2.0
The Settings screen: the tick box, and the core version underneath

📥 Downloading ROMs without a PC

With WiFi fitted and the menu on, key F opens the search: type a name, pick from the list, and the file lands straight on the microSD. No pulling the card, no switching on a computer.

The MSXnano menu downloading GRADIUSN.ROM from the internet onto the SD card
Pulling a ROM onto the card, with no PC involved

🖥️ Optional screen, and a boot logo

Both machines accept an ESP32-C6 with a 240×240 screen showing WiFi status, the clock and whether Turbo is on. This release adds the MSX logo assembling from both sides, like a real MSX2.

If you only want WiFi and do not care about the screen, an ESP-01S still works on the MSXnano — cheaper and smaller.

MSX logo on the ESP32-C6 module screen, just like an MSX2 boot
The MSX logo on the C6 screen, just like an MSX2
MSXnano ESP32-C6 module screen: WiFi connected, SSID, RSSI, Normal 3.58 MHz mode, uptime and temperature
The C6 screen: WiFi, signal, CPU mode, uptime and temperature

⚙️ MSXimus v3.2

The Console 60K catches up with everything above: the single BIOS with its switchable menu, downloads from the menu itself and the animated logo on the C6 screen. It also gets the pack with Nextor 3.0 beta 1, for anyone who likes to try what is coming.

💿 The BIOS pack: two builds of the same thing

The pack carries the MSX system ROMs and the Nextor disk kernel. There are two builds and only the Nextor differs:

PackNextorWho for
pack_bios_<machine>.bin2.1.4The stable one. This is the one you want unless you know why not.
pack_bios_<machine>_nextor3.bin3.0 beta 1To try the Nextor 3 beta. Deep things change and not everything is settled.
Note: the pack contains copyrighted MSX system ROMs, so it is not distributed with the code. You build it from your own dumps.

⚡ Installing

Everything goes to the board’s SPI flash with the Gowin Programmer, over USB-C. For each file: a write operation on the external flash (the options starting with exFlash, not the SRAM ones), the file in Programming File, and the address in the start-address field.

MSXnano (Tang Nano 20K)

#FileAddressRequired?
1msxnano_v2.0.fs0x000000Yes — the core
2BIOS pack0x200000Yes — it will not boot without it
3rp2040_keyboard.uf2Yes, if you want a keyboard

Step 3 does not use the Gowin: hold BOOTSEL, plug the Pico in and drag the file onto the RPI-RP2 drive that appears. Use rp2040_keyboard.uf2 for the Waveshare RP2040-Zero (the usual one) or rp2040_keyboard_pico.uf2 for a plain Raspberry Pi Pico.

MSXimus (Tang Console 60K)

#FileAddressRequired?
1MSXimus_v3.2.fs0x000000Yes — the core
2BIOS pack0x400000Yes — it will not boot without it
3yrw801.rom0x500000No — only for MoonSound/OPL4
The addresses are not negotiable. Note that the pack goes to 0x200000 on the MSXnano but to 0x400000 on the MSXimus. Put it in the wrong place and the machine boots to a black screen, with nothing to tell you why.

And on the MSXimus, once flashed, power cycle it: a reset is not enough, because the DDR3 needs to recalibrate from cold.

🔌 Wiring the ESP32-C6

It is optional: without it the machine runs just the same, only with no WiFi. The module is a Waveshare ESP32-C6-LCD-1.3, and the firmware is the same binary for both machines. Only the FPGA pins differ.

On the MSXnano

ESP32-C6Tang Nano 20KSignal
GPIO17 (RX)pin 27FPGA → C6
GPIO16 (TX)pin 28C6 → FPGA
GPIO3pin 29Turbo indicator
GNDGNDCommon ground

If you prefer the ESP-01S (WiFi only, no screen): its RX to pin 27, its TX to pin 28, plus 3.3 V and ground.

On the MSXimus

Here it goes to the J10 header, the free 2×20 — the one Sipeed’s schematic calls SDRAM1 CONN., not the one carrying the SDRAM module the core needs.

J10 pinSignalESP32-C6
11+5 V5V (right strip, the last one)
12GNDGND (right strip)
14TX (FPGA → C6)IO17, the C6’s RX (left strip)
16RX (FPGA ← C6)IO16, the C6’s TX (left strip)
18TURBO (FPGA → C6)GPIO3 (right strip, the first one)
How to find the pins with no silkscreen: with the board powered off and a multimeter in continuity mode, pin 12 is the only one on the whole header with a path to ground. Its row partner is 11 (+5 V), and from 12 towards the long side you get 14, 16 and 18.

Power comes from J10 itself (pin 11): the C6’s USB-C is only needed to flash its firmware — and it is best not to have both power sources connected at once. TX and RX go crossed, as always.

Flashing the C6: the easy way is esptool-js, Espressif’s own web flasher, in Chrome or Edge: connect over the module’s USB-C, pick the file, set the address to 0x0 and hit Program. Nothing to install.

⌨️ The keys

At power-on

KeyWhat it does
SSettings — this is where you turn the menu on and off
WWiFi configuration
nothingBoots the MSX (or the menu, if you enabled it)

In the card browser

KeyWhat it does
Up / DownMove (Left / Right = a whole page)
RETURN or button AOpen folder or launch the ROM
BACKSPACE or button BParent folder
R / D / AFilter: ROM only, DSK only, or everything
TABSwitch partition
FSearch and download online
HThis same help, on screen
ESCExit to MSX / MSX-DOS
MSXnano SD card browser with the type filter and the key bar
The browser, with the filter on top and the keys along the bottom

When launching a ROM

RETURN launches · M changes the mapper if detection got it wrong · S enables SRAM (ASCII8/16 only) · ESC goes back.

MSXnano launch-ROM screen showing the filename, size and detected mapper
Before launching: size, detected mapper and a loading bar

The MSXnano keyboard

With the new RP2040, the MSX special keys map like this:

MSX keyOn your USB keyboard
GRAPHLeft Alt, or either Windows key
CODE / KANARight Alt
STOPF12, or Scroll Lock
SELECTEnd
CAPSCaps Lock
F6F10F6–F10, sent as SHIFT+F1..F5 exactly as on a real MSX

Turbo is no longer a key: set it in Settings (Boot Turbo) or from software through the Panasonic ports. On the MSXimus, F12 also opens a status panel over the picture, with the MSX frozen underneath.

📚 Where everything lives

Each repository’s README is the reference documentation, and all of them were rewritten for this release: out went the old bug histories, in came the pins and the instructions you actually need.

RepositoryWhat you will find
MSXnanoThe Tang Nano 20K core, all three wirings with their pins, the flashing table and the keyboard map
MSXimusThe Console 60K core, the J10 header in detail, the F12 panel and the V9968
ESP32-for-FPGAThe WiFi module firmware, shared by both machines

All open source: the cores under GPLv3 and the ESP firmware under LGPL-2.1, derived from the excellent work of ducasp.

👉 Downloads

MSXnano v2.0 · MSXimus v3.2

Coming from an earlier version? Re-flash the BIOS pack even if you leave the core alone: the new menu lives in there. And on the MSXnano, if you were using the BL616 as your keyboard, you now need the Pico.