Ultima versión:
Versión 1.2
https://github.com/EremusOne/ESPectrum/releases/tag/v1.2
Nuevas características:
- Soporte para el formato de archivo TZX: ESPectrum ahora puede cargar archivos TZX con soporte completo de todo tipo de bloque descrito en la revisión 1.20 del formato. (Gracias a @jcgamestoy y @jsanchezv por su ayuda durante el desarrollo).
- Emulación precisa del efecto de nieve (tal y como fue descrito por Weiv y MartianGirl).
- Nueva opción de «fake scanlines» para modos de video VGA.
- Nuevas opciones de video disponibles:
- Tipo de render: Para seleccionar entre el modo «Estándar» y el modo «Efecto nieve» (requiere más potencia de cálculo y solo es necesario para imitar exactamente el comportamiento de un Speccy real que muestra ese efecto, así que el 99.99% del tiempo, el modo Estándar es suficiente).
- Scanlines: Para habilitar o deshabilitar las nuevas «fake scanlines».
- Nuevo indicador de volumen en pantalla.
- Soporte habilitado para las teclas de volumen multimedia (gracias @rtorralba).
Cambios:
- Mejoras de rendimiento: ESPectrum es hasta un 20% más rápido en promedio en algunos escenarios gracias a un código de renderizado de video completamente reescrito y nuevas optimizaciones del ciclo de la CPU.
- Solucionado un bug en el core Z80 que provocaba un fallo en el cargador de los juegos de Digital Integration (ATF, Bobsleigh, TT-Racer).
- Actualizada ROM ZX81+ IF2 de Paul Farrow a la versión 3.13, que incluye las siguientes mejoras:
- Soporte añadido para algunos controladores de pantalla en pseudo alta resolución adicionales, por ejemplo, «Pacman» y «Invaders» de Brian Lewis.
- Soporte añadido para dos técnicas avanzadas de pantalla de baja resolución, utilizadas por varios juegos de baja resolución de Dr. beep, por ejemplo, «LoadRunner».
- Soporte añadido para programas ZX81 escritos en C utilizando el kit de desarrollo z88dk.
- Emulación de teclas especiales del Spectrum+ añadida al teclado PS/2:
- Tecla TAB -> Modo extendido
- CAPS LOCK -> Bloqueo de mayúsculas del Spectrum
- GRAVE ACCENT -> Editar
- SEMICOLON -> Punto y coma del Spectrum
- BACKSLASH -> Comillas dobles del Spectrum
- ESC -> Break
- Nueva opción «TAB como fuego 1» añadida a la emulación de joystick del teclado PS/2: Esta opción asigna a la tecla TAB la misma función que el ALT DERECHO: fuego 1 del joystick. También hace que la tecla GRAVE ACCENT actúe como fuego 2 del joystick si se selecciona la emulación Kempston. Si esta opción está habilitada, las teclas TAB y GRAVE ACCENT no se comportarán como está descrito en el apartado anterior.
- Nuevos atajos de reset añadidos al teclado PS/2:
- ALT IZQUIERDO + RETROCESO -> Soft reset (reinicia el Spectrum con autoload del último snapshot cargado si está presente).
- CTRL + ALT IZQUIERDO + RETROCESO -> Reinicia el Spectrum.
- CTRL + ALT IZQUIERDO + SUPR -> Reinicia el ESP32.
- Actualización de firmware: A partir de esta versión, el nombre del archivo de actualización de firmware para el procedimiento de actualización mediante SD debe ser «firmware.upg».
- Pantalla de Acerca de actualizada para agradecer a los nuevos Patreons y colaboradores.
Versiones anteriores:
Versión 1.1
https://github.com/EremusOne/ZX-ESPectrum-IDF/releases/tag/v1.1
Nuevas características:
– Se han añadido varias ROMs seleccionables por el usuario: 48k Español, 128k Español, +2 Inglés y Español y ROM ZX81+ IF2 de Paul Farrow (gracias a Paul Farrow por dar permiso).
– Soporte integrado para la carga de archivos .P (ZX81) en el mismo diálogo de carga de instantáneas que los archivos SNA y Z80. La ROM de 128K y Paul Farrow se selecciona automáticamente y el archivo .P se carga instantáneamente.
– Capacidad para elegir la arquitectura y ROM preferidas (incluyendo recordar la última utilizada). El emulador iniciará con la selección deseada y también utilizará estas preferencias de manera apropiada al cargar archivos .z80.
– Opción añadida para flashear y usar ROMs personalizadas, una para el modelo 48k y otra para el modelo 128k de 16 y 32kb de tamaño cada una.
– Se ha ampliado el espacio propio de instantáneas a 100 ranuras. Además, las instantáneas mismas guardarán (y cargarán) información sobre la ROM utilizada al momento de tomarlas, lo que permite también tomar instantáneas de juegos de ZX81.
– Se ha añadido un diálogo de introducción para pokes: CTRL-F9 o CS+SS+O en el teclado ZX.
– Se ha añadido un acceso directo para enviar la señal NMI: CTRL + F10 o CS+SS+N en el teclado ZX.
– Se ha añadido el modo reproductor de cinta. Si se selecciona, ESPectrum emitirá solo el sonido EAR aumentado para que puedas utilizar ESPectrum como reproductor de archivos .tap enviando su audio a una máquina ZX Spectrum real.
– Se ha añadido soporte para el timing de las rutinas de carga de las ROMs de Rodolfo Guerra: si lo activas y utilizas alguna ROM de Rodolfo, ESPectrum enviará los datos de los archivos .tap a una velocidad de 4000bps (¡Gracias por la información sobre los tiempos de tus estupendas ROMs, Rodolfo!).
– Se ha añadido un acceso directo al modo «turbo» (CTRL + F2 o CS+SS+T en el teclado ZX). Hace que ESPectrum funcione «sin freno» y a la máxima velocidad posible. El audio se desactiva y el OSD de estadísticas se vuelve rojo cuando el modo turbo está activado.
Cambios:
– La velocidad media del emulador se ha mejorado en un 3.24%.
– Optimizaciones de SRAM (alrededor de 6 kb guardados).
– Se ha reducido el volumen de los clics de la interfaz en aproximadamente un 66%.
– Se ha mejorado el tiempo de respuesta y la precisión de los cálculos en el OSD de estadísticas de la CPU.
– Ahora el OSD de estadísticas se puede alternar entre la carga de cinta (si hay alguna cinta reproduciéndose) y las estadísticas de la CPU usando su acceso directo de teclado.
– Ya no es necesario crear las carpetas /.c y /.p, para capturas de pantalla y snapshots propios respectivamente, en la tarjeta SD. El emulador las creará automáticamente si las necesita.
– La pantalla de ayuda se ha actualizado para reflejar los nuevos accesos directos.
– Se ha actualizado la pantalla «Acerca de» para agradecer a los nuevos Patreons y colaboradores.
Versión 1.0
https://github.com/EremusOne/ZX-ESPectrum-IDF/releases/tag/v1.0
Nuevas características:
– Mejora en el soporte del sistema de archivos SD:
- * Soporte para carpetas con barra de estado superior que muestra la carpeta actual.
- * Indexación automática de carpetas con información del proceso mediante barras de progreso. No es necesario regenerar manualmente los índices de carpetas a partir de ahora.
- * Nombres de archivos de hasta 48 caracteres (más 4 para la extensión).
- * Cuadro de diálogo más grande para abrir archivos de snapshots y cintas.
- * Soporte de caracteres especiales: á, à, ä, â, é, è, ë, ê, í, ì, ï, î, ó, ò, ö, ô, ú, ù, ü, û, Ñ, ñ, Ç, ç, ¿, ¡, º y ª.
- * Posicionamiento en elementos de la lista de archivos que comienzan con A-Z o a-z presionando la letra correspondiente en el teclado PS/2 o ZX (SS + letra).
- * Opción de búsqueda case-insensitive: presione F3 en el teclado PS/2 o F, B en el teclado ZX e ingrese el texto de búsqueda para filtrar en tiempo real la lista de elementos.
- * Barra de estado con el número total de elementos y el elemento actual seleccionado en la carpeta.
- * Desplazamiento automático del nombre (manteniendo el enfoque durante más de dos segundos) para elementos con nombres más largos que el ancho del cuadro de diálogo.
– Nuevo sistema de joystick a través del convertidor ESPjoy DB9 a PS/2 (o convertidor DIY utilizando códigos de escaneo especiales de joystick ESPectrum):
- * Soporte de dos joysticks de hasta 8 botones.
- * Sencillo diálogo de personalización: puedes asignar teclas Spectrum, teclas especiales PS/2, acciones Kempston o acciones Fuller a cualquier entrada de joystick.
[IMPORTANTE] Para poder utilizar el nuevo sistema de joystick con ESPjoy, debes usar el nuevo firmware en: https://github.com/dacarsoft/DB9_2_Keyb … _ESPectrum
– Soporte para actualizar el firmware mediante la tarjeta SD: simplemente coloca el archivo del firmware en el directorio raíz de la SD y selecciona la opción de actualización.
– Nuevos elementos de interfaz (barras de progreso y cuadros de confirmación).
– Cuadro de confirmación de sobreescritura añadido al guardado de snapshots y al comando SAVE.
– Nuevo sistema de centrado de pantalla para modos CRT de 15 kHz y 50 Hz: usa CRTL F5-F8 o CS+SS Z,X,C,V en el teclado ZX.
– Nuevo cuadro de información de hardware (CTRL-F1 o CS+SS+I en el teclado ZX).
Cambios:
– Núcleo Z80: Añadida emulación precisa de WZ según los últimos descubrimientos como se describe en https://spectrumcomputing.co.uk/forums/ … hp?t=10555 ¡Gracias a @redcode!
– Rutinas de gestión de video y puertos optimizadas (casi un 10% más rápido en promedio que la versión anterior).
– Mejoras a la emulación del joystick PS/2: añadida emulación de joystick tipo Sinclair y Fuller.
– Mejoras al OSD: respuesta más rápida y cálculos más precisos.
– Se ajustó la modeline del modo 16:9 a 70 Hz (360×200) para cumplir mejor con el estándar IBM 720×400.
Bugfixes:
– Solucionado el error de perdida esporádica de sonido después de cargar una instantánea.
Versión 1.0 rc3
https://github.com/EremusOne/ZX-ESPectrum-IDF/releases/tag/v1.0.rc3
Nuevas características:
– Nuevo modelo Spectrum: Pentagon 128.
– Emulación de Betadisk con soporte de lectura/escritura TRD y solo lectura SCL. Disponible en todos los modelos Spectrum.
– Soporte de teclado dual PS/2 en ambos puertos de las placas Lilygo y Olimex.
– Nueva opción para indicar al emulador si hay un dispositivo conectado al primer puerto PS/2 en la placa ESPectrum o al segundo puerto PS/2 en las placas Lilygo y Olimex. Esto es útil para acelerar el proceso de inicio. Antes de esta opción, si no tenías un dispositivo conectado al puerto, se producía un retraso mientras el emulador intentaba reiniciarlo.
– Nueva opción para seleccionar si deseas que las teclas de cursor actúen como teclas de cursor Spectrum o como emulación de joystick. Puede seleccionarse en el menú o cambiarse usando la tecla Bloq Despl. Independientemente del modo de teclas de flecha seleccionado, la emulación de joystick estará siempre disponible en las teclas de cursor del teclado numérico.
– Soporte para el segundo botón de disparo en la emulación Kempston. Está asignado a la tecla Slash o a la tecla Gui derecha.
Cambios:
– Optimizada la velocidad de arranque: ahora el emulador se inicia en menos de dos segundos.
– Optimización de carga de archivos Sna y z80.
– La emulación de cursor joystick ahora envía 5678 y 0 de nuevo.
– La pantalla de ayuda ahora muestra las teclas para la placa ESPectrum si el emulador se está ejecutando en ella.
– Puedes usar CS+SS+P como pausa en el teclado ZX.
– El mensaje de pausa ya no se mantendrá fijo en la pantalla.
Bugfixes:
– Se solucionaron algunos errores en la carga de archivos z80: registro R incorrecto, escritura en páginas ROM y carga de bloques sin comprimir en las versiones v2 y v3 no implementadas. Ahora, muchos archivos z80 que antes no funcionaban cargarán perfectamente.
– Se solucionó un error en el OSD después de hacer hard reset.
Problemas conocidos:
– En casos raros, el sonido no se inicializa al iniciar el emulador o se corrompe o se silencia después de cargar un .sna, .z80 o snapshot. Reiniciar el ESP32 (usando F12 o apagando y encendiendo) siempre lo soluciona.
Versión 1.0 rc2
https://github.com/EremusOne/ZX-ESPectrum-IDF/releases/tag/v1.0.rc2
Nuevas características:
– Implementada la carga rápida de archivos TAP, seleccionable a través del menú Opciones/Almacenamiento.
– Posibilidad de carga rápida o solo insertar cinta desde el selector de archivos TAP: ENTER para carga rápida y ESPACIO para insertar la cinta (ENTER y 0 en el teclado ZX).
– Nuevo Navegador de cinta (F7) que permite navegar por la cinta y (re)iniciar la carga desde cualquier punto.
– OSD en tiempo real del estado de la cinta: si la cinta se está cargando, el OSD (F8) cambiará para mostrar información sobre el estado de la carga.
– Se atrapa el comando SAVE: si utilizas el comando, guardará un archivo .tap en la tarjeta SD con el nombre que pongas entre comillas.
– Emulación de las temporizaciones «Early» y «Late» de la ULA. Ahora, con «Late timings», el “128k Spectrum Timing Test” funciona perfectamente. (Gracias a @redcode AKA zJoyKiler, por su ayuda).
– La emulación de Spectrum 48K Issue 2 ahora es seleccionable (Opciones/Otros/48K Issue 2).
– Detección software de las diferentes placas compatibles Ahora, solo hay un archivo binario para todas las placas: Lilygo TTGO VGA32, ESPectrum de Antonio Villena y ESP32-SBC FabGL de Olimex. (Gracias a David Carrion @dacarsoft por la ayuda con la placa ESPectrum).
Cambios:
– Optimizaciones en el sistema de video y el ciclo de la CPU que resultan en un aumento de ~10.65% en la velocidad de emulación.
– Cambios en el núcleo Z80 para reflejar el comportamiento de las instrucciones de bloque como se describe en https://github.com/hoglet67/Z80Decoder/ … nted-Flags (Gracias a José Luis Sánchez @zx81 por su ayuda).
– Se agregaron cambios en la emulación de la instrucción HALT según se describe en https://github.com/jsanchezv/JSpeccy/co … 0d1eb40cfd
– Se corrigió el tiempo de cambio de banco de pantalla. Ahora la prueba ptime.tap de Patrik Rak funciona correctamente. (También podemos pasar ptime128.tap correctamente, pero necesita funciones de dibujo más precisas y lentas, así que decidimos mantener las funciones de dibujo más rápidas porque es una prueba no compatible en la mayoría de los emuladores y sin uso práctico. Más información en https://softspectrum48.weebly.com/notes … -challenge ).
– El sistema de archivos SPIFFS ya no se utiliza. La tarjeta SD es la única opción de almacenamiento y la configuración se almacena en la partición NVS.
– La tecla F7 ya no es «Detener cinta» y la tecla F6 cambia de «Reproducir/Pausar cinta» a «Reproducir/Detener cinta».
– La tecla F11 ahora es un atajo a «Hard reset» (CS + SS + Q en el teclado ZX).
– El atajo para la captura de pantalla BMP cambia a CS + SS + S en el teclado ZX.
– Se redujo el consumo de RAM de la emulación AY en 6kb.
– Mejorada la emulación del joystick Kempston para leer también el puerto 0xDF. El joystick ahora funciona correctamente en Nonamed y probablemente en otros juegos.
Problemas conocidos:
– En casos raros, el sonido no se inicializa al iniciar el emulador o se corrompe o se silencia después de cargar un .sna, .z80 o snapshot. Reiniciar el ESP32 (usando F12 o apagando y encendiendo) siempre lo soluciona.
Versión 1.0 rc1 hotfix
https://github.com/EremusOne/ZX-ESPectrum-IDF/releases/tag/v1.0.rc1.hotfix1
Bugfixes:
– Arregladas funciones peek16 y poke16 para comprobar que los dos bytes de la dirección estan en la misma pagina de ram. Esto soluciona problemas detectados en Cabal, en algunas intros de 1k incluidas en «Ahh… the tape loading era» y en el primer sample de voz de la demo «Back to the gemba».
Versión 1.0 rc1
https://github.com/EremusOne/ZX-ESPectrum-IDF/releases/tag/v1.0.rc1
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.
Versión 1.0 Beta 5.3
https://github.com/EremusOne/ZX-ESPectrum-IDF/releases/tag/v1.0.beta.5.3
Repositorio Github:
¿Interesado en conocer los entresijos del código o en ampliar o mejorar alguna característica del emulador? Entonces, este es el enlace que debes seguir: