ESPectrum, emulador de ZX Spectrum para el SoC ESP32

Emuladores y aplicaciones que ayudarán a la perpetuación del Spectrum y su software en el futuro

Moderador: Sir Cilve Sinclair

Responder
Eremus
rst 0
Mensajes: 2
Registrado: Dom Jun 04, 2023 6:53 pm

ESPectrum, emulador de ZX Spectrum para el SoC ESP32

Mensaje por Eremus » Jue Jun 22, 2023 3:18 am

Hola!

Tras unos cuantos meses de trabajo y preparación y después de haber realizado la presentación del proyecto el pasado sábado 3 de junio en RetroReal, nos llena de orgullo y satisfacción, presentaros a:

Imagen

¿Qué es ESPectrum?

ESPectrum es un emulador de los modelos 48K y 128K del microordenador Sinclair ZX Spectrum que se ejecuta sobre microcontroladores Espressif ESP32.

Un microcontrolador es un pequeño ordenador dedicado para tareas específicas (usualmente industriales) con una potencia de proceso, memoria y almacenamiento usualmente limitadas. Afortunadamente, aun con sus limitaciones, el ESP32 ha demostrado disponer de suficiente potencia de proceso para el desarrollo y ejecución de diversos proyectos de emulación.

El chip se ofrece a fabricantes y “makers” para su integración en otras placas y por suerte para nosotros, existen placas en el mercado que, además del ESP32, incluyen de serie la electrónica, componentes y conectores necesarios para el perfecto funcionamiento de nuestro proyecto. Una de las opciones más asequibles es la placa Lilygo TTGo VGA32.

Esta pequeña placa incluye, por un precio aproximado de unos 15€, todo lo necesario para disfrutar de un Spectrum emulado: conector VGA, dos conexiones de tipo PS/2 para teclado y ratón, una salida de audio minijack preamplificada, un slot para tarjeta SD y un conector microUSB para alimentación y comunicación USB serie.

Además hemos colaborado con Antonio Villena, conocido fabricante de hardware retro que ha creado una placa compatible con el proyecto que dispone de algunas mejoras destacando entre ellas la posibilidad de utilizar como dispositivo de entrada un teclado real de Sinclair ZX Spectrum.

Imagen

Así, si disponemos de una placa equipada con los conectores necesarios, un teclado que soporte el protocolo PS/2 o un teclado real ZX Spectrum, un monitor VGA y, aunque no es imprescindible ya que el ESP32 incluye almacenamiento interno, una tarjeta micro SD como medio de almacenamiento, podemos disfrutar gracias a ESPectrum de un emulador maduro y preciso, que implementa a la perfección aspectos como memoria en contienda, bus flotante, sonido beeper y AY, temporización cycle-perfect y generación de vídeo idéntica a la máquina real.

En su versión más reciente se puede conectar, además de a monitores VGA estándar, a televisores CRT mediante una sencilla modificación a la placa Lilygo (con soporte directo en la placa ESPectrum de Antonio Villena) y un adaptador bastante asequible utilizando la frecuencia exacta de refresco de video que la de un Sinclair ZX Spectrum original.

Imagen

Características

- Emulación de Spectrum 48K y 128K (no se necesita PSRAM).
- Emulación precisa del Z80 (core de José Luis Sánchez AKA zx81, autor del magnífico ZXBaremulator).
- Modos de video VGA Standard, VGA 50hz y CRT 50hz.
- Soporte para relaciones de aspecto 16:9 y 4:3 (usando modos de 360×200 o 320×240).
- Efectos de atributos multicolor emulados (motores Bifrost*2, Nirvana y Nirvana+).
- Efectos de borde emulados (Aquaplane, The Sentinel, demo Overscan).
- Efecto de bus flotante emulado (Arkanoid, Sidewize).
- Emulación de memoria contended y E/S contended.
- Emulación de sonido AY-3-8912.
- Emulación de Beeper & Mic respetando sus niveles de salida relativos (Cobra’s Arc).
- Soporte de teclado PS/2 y teclado Spectrum real (utilizando la placa ESPectrum de Antonio Villena).
- Emulación de joystick tipo Kempston y Cursor.
- Menú OSD completo en dos idiomas: inglés y español.
- Carga de archivos TAP en tiempo real.
- Carga de snapshots SNA y Z80.
- Guardado y carga de snapshots (tanto 48K como 128K soportados).
- Captura de pantalla BMP en tarjeta SD.
- Soporte simultáneo de almacenamiento interno (SPIFFS) y externo (tarjeta SD).

Podéis encontrar mas información en la web del proyecto: https://zxespectrum.speccy.org y en el repo Github: https://github.com/EremusOne/ZX-ESPectrum-IDF

Tambien hemos abierto un Patreon en https://www.patreon.com/ESPectrum por si teneis a bien colaborar con el proyecto.

Los binarios de la última versión y las instrucciones para flashearlos los tenéis ya disponibles en https://github.com/EremusOne/ZX-ESPectr ... g/v1.0.rc1 y estas son las notas de la versión:
Nuevas características:

- Soporte para el teclado real Spectrum 48k utilizando la nueva placa ESPectrum de Antonio Villena. A partir de ahora, habrá dos binarios: uno para las placas Lilygo VGA32 y similares y otro para la placa de Villena.

- Soporte para tres modos de video: VGA Estándar (60 y 70hz), VGA 33-40k 50hz y modos CRT 15k 50hz. Para los modos VGA 50hz solo necesitas un monitor que los soporte. El modo CRT 50hz se soporta en la placa ESPectrum a través del adaptador VGA-Scart de Antonio Villena (también funciona en la placa Lilygo pero se necesita un pequeño truco, que detallaremos en el sitio web de ESPectrum).

Puedes cambiar entre modos usando las siguientes combinaciones de teclas durante la secuencia de arranque del emulador y verificar más tarde el modo de video actual en la barra inferior de la pantalla de ayuda:

1 + Q -> VGA Estándar 4:3 (60hz)
1 + W -> VGA Estándar 16:9 (70hz)
2 + Q -> VGA 40khz 50hz 4:3
2 + W -> VGA 33khz 50hz 16:9
3 + Q -> CRT 15khz 50hz 4:3
3 + W -> CRT 15khz 50hz 16:9

(En teclados PS/2 debes alternar entre las dos teclas. En el teclado ZX Spectrum puedes mantener ambas teclas presionadas)

Cambios:

- Más optimizaciones: mejor velocidad de emulación.
- Mejoró el sistema de menú: puedes moverte hacia adelante y hacia atrás en los niveles de menú sin problemas.
- Nombre "ESPectrum" multicolor en el menú principal.

Problemas conocidos:

- En casos raros, el sonido no se inicializa al iniciar el emulador o se corrompe o se silencia después de cargar sna, z80 o snapshot. Reiniciar el ESP32 (usando F12 o apagando y encendiendo) siempre lo soluciona.
Saludos!

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 23 invitados