Página 1 de 5

ESPectrum: Un emulador de ZX Spectrum

Publicado: 20 Mar 2021, 02:53
por davidprograma
ESPectrum: emulador de Spectrum por 10€ (para VGA y PS/2)

Hola, ya se ha hablado de este tema por aquí, pero quería contarlo desde mi punto de vista...

El ZX-ESPectrum es un emulador para microcontroladores ESP32, con algunas limitaciones pero bastante operativo. Hay una placa ESP32 lista para usar, que se puede conseguir por 10€ en AliExpress (o menos, las últimas que compré me han salido por 8.5€ cada una, incluyendo gastos de envío). Aquí teneis la página del fabricante y esta es la que yo compré. Buscando y rebuscando se pueden conseguir más baratas, pero ya sabeis cómo son estos productos chinos, igual lo que os llegue otras especificaciones (menos memoria, o sólo un core).


Es una placa muy interesante que lleva los siguientes conectores:
- VGA (D-SUB 15 pines)
- Teclado PS/2
- Ratón PS/2
- Jack de 3.5mm
- Ranura de tarjeta microSD
- USB para alimentación y programación
- Y algunos pines sueltos para expansión

En su interior lleva un procesador Xtensa dual-core con 520kb de RAM, memoria SPI de 4Mb y almacenamiento flash SPI de 4Mb. Tiene suficiente potencia para generar señal de vídeo VGA de baja resolución (<= 400x300), y todavía le queda potencia disponible para hacer otras cosas.

Lleva incorporado WiFi y Bluetooth, este último lo he usado para manejar el emulador con un mando de la Wii.)

También se puede comprar el microcontrolador suelto, para soldar en una placa, por unos 3€, o en una placa para montar en breadboard por unos 9€ (o menos, según modelos), para conectar los pines a VGA, PS/2, etc.

El año pasado (2020) conocí los micros ESP32 y me puse a cacharrear con ellos. Pensé en programar un emulador de Spectrum, pero ya encontré uno hecho (el de Rampa), y empecé a construir sobre él.

El repositorio github del emulador está en
https://github.com/dcrespo3d/ZX-ESPectr ... ttgo-vga32

La rama que indico tiene configurados los pines para la TTGo, la rama Master es para un ESPectrum que me construí _dentro_ de un teclado PS/2, al estilo de un Spectrum real, donde el teclado es el ordenador.

He escrito cómo conocí la plataforma y los cacharreos variados que hice con ella en este documento:
https://dcrespo3d.github.io/ZX-ESPectru ... istory-es/

El emulador de Spectrum emula Spectrum 48K y 128K / +2A / +3, con ficheros de ROM intercambiables.

La temporización de la emulación es más que digna, pero no perfecta al 100%. Eso sí, ha mejorado muchísimo desde que incluí el emulador de Z80 de José Luis Sánchez (aka zx81 por aquí), aunque todavía genero el vídeo sin sincronizar con los T-states, con lo que los modos multicolor raros/modernos no funcionan aún.

La salida de vídeo por VGA soporta monitores 4:3 (320x240) y 16:9 (360x200).

Soporta juegos en snapshot en formatos .SNA y .Z80.

Los juegos pueden estar o bien en la flash interna, que se graba al programarla por USB, o bien en una tarjeta micro SD externa.

El emulador tiene sonido casi perfecto en modo 48K. En modo 128K la emulación del AY-3-8912 está incompleta; suena algo, pero no suena perfecto.

Se pueden grabar y cargar instantáneas (en modos 48K y 128K) para esos juegos difíciles...

Tengo un par de vídeos sobre el emulador:

El primero muestra la placa TTGo, que viene con todos los conectores necesarios:
https://youtu.be/GXHBrQVTfBw

El segundo muestra una placa de desarrollo ESP32, a la que he tenido que conectar un conector VGA a los pines adecuados, y adaptar el teclado PS/2 mediante un convertidor de niveles. Para el que le guste cacharrear con hardware puede ser interesante...
https://youtu.be/ROthljwC5OA

Incluso he hecho pruebas (con éxito) de conectar la membrana de un spectrum real, tengo preparado el código para ello, sólo hay que conectar 13 pines. Igual algún día me lo monto dentro de un teclado de Spectrum real, como ya hice con un Raspberry Pi y el ZXBaremulator de José Luis Sánchez, pero eso es otra historia...

Todavía sigo trabajando en el emulador, me gustaría añadir:
- Gestión de múltiples instantáneas (ahora sólo se guarda una).
- Soporte para ficheros .TAP, para ello tengo que entender mejor el proceso de carga desde cinta.
- Mejora de la temporización (la emulación de la contended memory y los ciclos de espera ULA -> CPU es casi perfecta en modo 48K).
- Soporte de modos multicolor (Nirvana / Bifrost / ...). Para ello es imprescindible mejorar la temporización, y sincronizar la generación de vídeo con la emulación de la CPU casi con precisión de T-state. Actualmente la sincronización es a nivel de frame...

Pues nada, si alguien se anima y quiere probarlo, ya tiene bastante info... no prometo ni garantizo nada ni me llevo comisión, pero personalmente estoy bastante contento con las ESP32, me lo estoy pasango genial cacharreando con ellas, y no soy el único; por los comentarios en los vídeos de youtube veo que hay más gente que se ha animado a hacerse con uno.

Re: ESPectrum: emulador de Spectrum por 10€ (para VGA y PS/2)

Publicado: 20 Mar 2021, 08:21
por Alki
Hola, tienes un hilo donde se habla bastante de este tema:
viewtopic.php?t=8882

Un saludo

Re: ESPectrum: emulador de Spectrum por 10€ (para VGA y PS/2)

Publicado: 20 Mar 2021, 09:05
por iturbez
Hola.
Muy interesante el tema.
¿Podrías poner un enlace directo a la placa que utilizas para este proyecto?
Sí pongo los datos que has dado, no me aclaro cuál es la necesaria... Igual doy yo muy bruto...
Gracias y un saludo.

Re: ESPectrum: emulador de Spectrum por 10€ (para VGA y PS/2)

Publicado: 20 Mar 2021, 10:48
por davidprograma
Sí, por eso digo que ya se ha hablado de esto por aquí.

Un saludo.
Alki escribió: 20 Mar 2021, 08:21 Hola, tienes un hilo donde se habla bastante de este tema:
viewtopic.php?t=8882

Un saludo

Re: ESPectrum: emulador de Spectrum por 10€ (para VGA y PS/2)

Publicado: 20 Mar 2021, 10:53
por davidprograma
Hola, he actualizado el mensaje con enlaces.

Mirando mi historial de compras de AliExpress, he comprado ésta recientemente

https://es.aliexpress.com/item/4001229710648.html

y ésta hace unos meses:

https://es.aliexpress.com/item/33014937190.html


iturbez escribió: 20 Mar 2021, 09:05 Hola.
Muy interesante el tema.
¿Podrías poner un enlace directo a la placa que utilizas para este proyecto?
Sí pongo los datos que has dado, no me aclaro cuál es la necesaria... Igual doy yo muy bruto...
Gracias y un saludo.

Re: ESPectrum: emulador de Spectrum por 10€ (para VGA y PS/2)

Publicado: 20 Mar 2021, 17:28
por iturbez
davidprograma escribió: 20 Mar 2021, 10:53 Hola, he actualizado el mensaje con enlaces.

Mirando mi historial de compras de AliExpress, he comprado ésta recientemente

https://es.aliexpress.com/item/4001229710648.html

y ésta hace unos meses:

https://es.aliexpress.com/item/33014937190.html


iturbez escribió: 20 Mar 2021, 09:05 Hola.
Muy interesante el tema.
¿Podrías poner un enlace directo a la placa que utilizas para este proyecto?
Sí pongo los datos que has dado, no me aclaro cuál es la necesaria... Igual doy yo muy bruto...
Gracias y un saludo.
¡Guauuu!
Me lo pido ahora mismo...
Muchísimas gracias, compañero.

Re: ESPectrum: emulador de Spectrum por 10€ (para VGA y PS/2)

Publicado: 20 Mar 2021, 21:38
por issalig
Ackerman está portando un montón de emuladores (CPC, ZX, GameBoy, ...) a esa tarjeta.
Más info en http://retrowiki.es/viewtopic.php?f=86& ... p200125074

Re: ESPectrum: emulador de Spectrum por 10€ (para VGA y PS/2)

Publicado: 21 Mar 2021, 01:34
por davidprograma
Lo sé, estoy en contacto con él, estamos intercambiando ideas y detalles técnicos... :)
issalig escribió: 20 Mar 2021, 21:38 Ackerman está portando un montón de emuladores (CPC, ZX, GameBoy, ...) a esa tarjeta.
Más info en http://retrowiki.es/viewtopic.php?f=86& ... p200125074

Re: ESPectrum: emulador de Spectrum por 10€ (para VGA y PS/2)

Publicado: 21 Mar 2021, 01:37
por davidprograma
iturbez escribió: 20 Mar 2021, 17:28
¡Guauuu!
Me lo pido ahora mismo...
Muchísimas gracias, compañero.
Ya me contarás ;) Yo me lo estoy pasando como un enano trasteando con él...

Re: ESPectrum: emulador de Spectrum por 10€ (para VGA y PS/2)

Publicado: 21 Mar 2021, 09:50
por iturbez
davidprograma escribió: 21 Mar 2021, 01:37
iturbez escribió: 20 Mar 2021, 17:28
¡Guauuu!
Me lo pido ahora mismo...
Muchísimas gracias, compañero.
Ya me contarás ;) Yo me lo estoy pasando como un enano trasteando con él...
He pedido un par de tarjetas. Ahora, a esperar que lleguen, y ¡a jugaaar!
Magnífico proyecto.