Skip to content

ZXMetalCircle 1.00

Choose a tag to compare

@shaeon shaeon released this 27 Oct 19:07
· 15 commits to main since this release

ZXMetalCircle 1.00

Español más abajo

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_i folder 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

  1. Format a micro SD card as FAT32.
  2. Unzip ZXMetalCircle-1.00-sd.zip into the root of the card.
  3. Optional: edit cmdline.txt (options explained in cmdline-en.hlp); for WiFi, copy wpa_supplicant.conf.ejemplo to wpa_supplicant.conf and write your network in it.
  4. 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_i se 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

  1. Formatea una tarjeta micro SD en FAT32.
  2. Descomprime ZXMetalCircle-1.00-sd.zip en la raíz de la tarjeta.
  3. Opcional: edita cmdline.txt (opciones explicadas en cmdline.hlp); para la WiFi, copia wpa_supplicant.conf.ejemplo como wpa_supplicant.conf y escribe en él tu red.
  4. 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.