Repository navigation
Releases: shaeon/ZXMetalCircle
Release list
ZXMetalCircle 1.04
ZXMetalCircle 1.04
What's new since 1.00
Disks (+3)
- 720K disks: each drive adapts to the disk you insert. A DSK with two sides or more than 44 tracks turns that drive into an 80-track double-sided 3.5" drive; any other disk keeps the +3's usual 3" drive. Before, +3DOS answered "disk unsuitable". Reported by Ximo.
- New disk (Alt+F) asks for the format: 180K (3") or 720K (3.5", already formatted for +3DOS).
- The Running Man now loads: its loader switches the drive motor off and keeps reading, so the disk keeps spinning while the controller is in use.
Joystick
- Kempston decoded by A5 only, like the original interface. Games that do not read port 0x1F now work, such as Silent Shadow (port 0xD3) and Las Tres Luces de Glaurung (0xDF). Thanks to José Luis Sánchez.
Picture
- Palette by model, as in JSpeccy: the 16K and 48K use the palette derived from the ULA voltages; the 128K, +2, +2A, +3 and +3e the usual one with pure black (thanks to cacharreo).
- New option "Pure black (48K palette)" (
pureblack=1) in the settings.
Other
- The SD card includes all the firmware DTB files (Pi 1 to Pi 5 and CM modules). Thanks to José Luis Sánchez.
GPIO.md: every GPIO pin the emulator uses, and which options share pins.- "Sound on GPIO12" is greyed out in the settings when it is not used.
- Automatic builds on GitHub: every change is built and tested, and releases are created from tags.
Full history (in Spanish): CHANGELOG.md.
Installing or updating
Unzip ZXMetalCircle-1.04-sd.zip onto a FAT32 SD card (or over your current one). Your games, saves/, snaps/ and the esxDOS card are kept; cmdline.txt is replaced, so keep a copy if you changed it. See the README for details.
Licence: GPL v3 or later. Provided "as is", without warranty of any kind.
Español
Novedades desde la 1.00
Discos (+3)
- Discos de 720K: cada unidad se adapta al disco que se mete. Con un DSK de dos caras o de más de 44 pistas, esa unidad pasa a ser una disquetera de 3,5" de 80 pistas y doble cara; con cualquier otro disco sigue siendo la de 3" del +3. Antes, +3DOS respondía "disk unsuitable". Reportado por Ximo.
- Disco nuevo (Alt+F) pregunta el formato: 180K (3") o 720K (3,5", ya formateado para +3DOS).
- The Running Man ya carga: su cargador apaga el motor de la disquetera y sigue leyendo, así que ahora el disco sigue girando mientras se use el controlador.
Joystick
- Kempston decodificado solo por A5, como el interfaz original. Ya funcionan los juegos que no leen el puerto 0x1F, como Silent Shadow (puerto 0xD3) y Las Tres Luces de Glaurung (0xDF). Gracias a José Luis Sánchez.
Imagen
- Paleta según el modelo, como en JSpeccy: el 16K y el 48K usan la paleta calculada a partir de los voltajes de la ULA; el 128K, +2, +2A, +3 y +3e, la de siempre con negro puro (gracias a cacharreo).
- Opción nueva "Negro puro (paleta 48K)" (
pureblack=1) en la configuración.
Otros
- La SD lleva todos los DTB del firmware (de la Pi 1 a la Pi 5 y los módulos CM). Gracias a José Luis Sánchez.
GPIO.md: todos los pines GPIO que usa el emulador y qué opciones comparten pines.- "Sonido por GPIO12" sale en gris en la configuración cuando no se usa.
- Compilación automática en GitHub: cada cambio se compila y se prueba, y las releases se crean a partir de las etiquetas.
Historial completo: CHANGELOG.md.
Instalar o actualizar
Descomprime ZXMetalCircle-1.04-sd.zip en una tarjeta SD en FAT32 (o encima de la que ya tienes). Se conservan tus juegos, saves/, snaps/ y la tarjeta de esxDOS; cmdline.txt se sustituye, así que guárdalo si lo cambiaste. Más detalles en el README en español.
Licencia: GPL v3 o posterior. Se ofrece "tal cual", sin garantía de ningún tipo.
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.