Repository navigation
ZXMetalCircle 1.00
ZXMetalCircle 1.00
Bare-metal ZX Spectrum emulator for the Raspberry Pi, written in C++ on top of Rene Stange's Circle library. No Linux: the Pi boots straight into the emulator from the SD card.
This is the first public release, from a single code base for 32 and 64 bits.
Models
| Raspberry Pi | Kernel | Bits |
|---|---|---|
| Pi 1, Zero, Zero W | kernel.img |
32 |
| Pi 2 | kernel7.img |
32 |
| Pi 3, Zero 2 W | kernel8.img |
64 (32-bit kernel8-32.img also included) |
| Pi 4, 400 | kernel8-rpi4.img |
64 (32-bit kernel7l.img also included) |
| Pi 5, 500 | kernel_2712.img |
64 (experimental) |
config.txt picks the right kernel for each model.
Highlights
- ZX Spectrum 16K, 48K, 128K (default), +2, +2A, +3 and +3e, with JSpeccy's timings, contention and floating bus.
- Tapes: TAP, TZX, PZX and CSW, with instant (trapped like Fuse), fast and real-speed loading, loader acceleration adapted from Fuse, automatic start/stop, a block browser (F3) and polarity inversion. If a TZX says it does not run on the current model, you are offered to switch.
- Snapshots: Z80, SNA and SZX.
- +3 disks (.DSK, with protections: weak sectors, Speedlock, long tracks, CRC errors), +3e hard disks, divMMC with esxDOS (its card is an image; files left in the
esxdos_ifolder are imported into it), Interface 1 with microdrives (MDR and JSpeccy's MDV), RS232 and ZX Net, Interface 2 cartridges, Multiface (with your own ROMs), Spectranet, LEC memory and its CP/M. - AY with ABC/ACB/BAC/mono stereo and beeper with Fuse's speaker model, at 48 kHz over HDMI, PWM jack or USB sound card.
- Scanlines, several border sizes, ULAplus.
- USB keyboards, joysticks and mouse; Recreated ZX Spectrum keyboard (recognised by its USB identifier); real Spectrum keyboard and joysticks over GPIO; real cassette input.
- Network over WiFi or cable: web page to manage the SD card (it can be turned off, made read-only or protected with a password), ZXDB search and download, TNFS servers, NTP time.
- Settings from the emulator itself (F1, C), Spanish and English interface.
Experimental / to be confirmed
- Raspberry Pi 5 / 500: tested on real hardware (display, keyboard, scanlines); WiFi is enabled but untested (Circle warns it may be unstable with an HDMI display).
- Recognising the Recreated keyboard by its USB identifier, and the web page password and read-only mode, have not yet been tested on real hardware.
Full history (in Spanish): CHANGELOG.md.
Installation
- Format a micro SD card as FAT32.
- Unzip
ZXMetalCircle-1.00-sd.zipinto the root of the card. - Optional: edit
cmdline.txt(options explained incmdline-en.hlp); for WiFi, copywpa_supplicant.conf.ejemplotowpa_supplicant.confand write your network in it. - Put the card in the Pi and power it on. F1 shows the help.
On the Pi 5, connect the monitor to HDMI0 (next to the power input) to have sound.
Updating from a beta: copy the contents of the zip over your card. Your games, saves/, snaps/ and the esxDOS card are kept; cmdline.txt is replaced, so keep a copy if you changed it. An old esxdos folder is renamed to esxdos_i and imported into the card.
Credits
Thanks to José Luis Sánchez, whose JSpeccy and ZXBaremulator inspired this project and whose z80cpp is its Z80; to Rene Stange for Circle; to the RetroWiki group; to Jordi (jbinary.itch.io); and to Víctor Iborra (EremusOne) for ESPectrum. Full credits, licences of third-party code and ROMs, AI assistance note and disclaimer: see the README.
Licence: GPL v3 or later. Provided "as is", without warranty of any kind.
Español
Emulador bare-metal de ZX Spectrum para Raspberry Pi, escrito en C++ sobre la librería Circle de Rene Stange. Sin Linux: la Pi arranca directamente en el emulador desde la tarjeta SD.
Es la primera versión pública, con un único código para 32 y 64 bits.
Modelos
| Raspberry Pi | Kernel | Bits |
|---|---|---|
| Pi 1, Zero, Zero W | kernel.img |
32 |
| Pi 2 | kernel7.img |
32 |
| Pi 3, Zero 2 W | kernel8.img |
64 (también va el de 32 bits, kernel8-32.img) |
| Pi 4, 400 | kernel8-rpi4.img |
64 (también va el de 32 bits, kernel7l.img) |
| Pi 5, 500 | kernel_2712.img |
64 (experimental) |
config.txt elige el kernel de cada modelo.
Lo principal
- ZX Spectrum 16K, 48K, 128K (por defecto), +2, +2A, +3 y +3e, con los tiempos, la contención y el bus flotante de JSpeccy.
- Cintas: TAP, TZX, PZX y CSW, con carga instantánea (con la trampa como Fuse), rápida y real, aceleración de cargadores adaptada de Fuse, arranque y parada automáticos, navegador de bloques (F3) e inversión de la polaridad. Si un TZX dice que no funciona en el modelo actual, se ofrece cambiarlo.
- Snapshots: Z80, SNA y SZX.
- Discos del +3 (.DSK, con protecciones: sectores débiles, Speedlock, pistas largas, errores de CRC), discos duros del +3e, divMMC con esxDOS (su tarjeta es una imagen; lo que se deja en la carpeta
esxdos_ise importa a ella), Interface 1 con microdrives (MDR y el MDV de JSpeccy), RS232 y ZX Net, cartuchos del Interface 2, Multiface (con tus propias ROMs), Spectranet, memoria LEC y su CP/M. - AY con estéreo ABC/ACB/BAC/mono y beeper con el modelo de altavoz de Fuse, a 48 kHz por HDMI, jack PWM o tarjeta de sonido USB.
- Scanlines, varios tamaños de borde, ULAplus.
- Teclados, joysticks y ratón USB; teclado Recreated ZX Spectrum (reconocido por su identificador USB); teclado real de Spectrum y joysticks por GPIO; entrada de un casete real.
- Red por WiFi o cable: página web para gestionar la SD (se puede apagar, dejar en solo lectura o proteger con contraseña), búsqueda y descarga de ZXDB, servidores TNFS, hora por NTP.
- Configuración desde el propio emulador (F1, C), interfaz en español e inglés.
Experimental / por confirmar
- Raspberry Pi 5 / 500: probada en hardware real (imagen, teclado, scanlines); la WiFi está activada pero sin probar (Circle avisa de que puede ser inestable con una pantalla HDMI).
- El reconocimiento del Recreated por su identificador USB, y la contraseña y el modo solo lectura de la web, aún no se han probado en hardware real.
Historial completo: CHANGELOG.md.
Instalación
- Formatea una tarjeta micro SD en FAT32.
- Descomprime
ZXMetalCircle-1.00-sd.zipen la raíz de la tarjeta. - Opcional: edita
cmdline.txt(opciones explicadas encmdline.hlp); para la WiFi, copiawpa_supplicant.conf.ejemplocomowpa_supplicant.confy escribe en él tu red. - Pon la tarjeta en la Pi y enciéndela. F1 muestra la ayuda.
En la Pi 5, conecta el monitor al HDMI0 (junto a la alimentación) para tener sonido.
Actualizar desde una beta: copia el contenido del zip encima de tu tarjeta. Se conservan tus juegos, saves/, snaps/ y la tarjeta de esxDOS; cmdline.txt se sustituye, así que guárdalo si lo cambiaste. Una carpeta esxdos antigua se renombra a esxdos_i y se importa a la tarjeta.
Créditos
Gracias a José Luis Sánchez, cuyos JSpeccy y ZXBaremulator inspiraron este proyecto y cuyo z80cpp es su Z80; a Rene Stange por Circle; al grupo de RetroWiki; a Jordi (jbinary.itch.io); y a Víctor Iborra (EremusOne) por ESPectrum. Créditos completos, licencias del código de terceros y de las ROMs, nota sobre la asistencia de IA y aviso legal: en el README en español.
Licencia: GPL v3 o posterior. Se ofrece "tal cual", sin garantía de ningún tipo.