SpecIde sigue vivo...

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

Moderador: Sir Cilve Sinclair

Responder
TheMartian
rst 0
Mensajes: 25
Registrado: Dom Mar 25, 2018 2:07 pm

SpecIde sigue vivo...

Mensaje por TheMartian » Lun Abr 03, 2023 11:03 pm

Hola,

Hace tiempo que no pasaba por aquí.

Entre tanto he seguido haciendo cosillas con mi emulador, SpecIde, el emulador más lento que el caballo del malo.

Ahora mismo tiene:
- Todos los hallazgos de estos últimos años en el Z80. (Menos el Special Reset y el manejo de la NMI, vale...)
- Emulación (cof, cof, casi) perfecta de todos los modelos oficiales de Spectrum y del Pentagon pero el BetaDisk aún no. Incluso el Snow Effect lo hace bien, vaya.
- Emulación cutrosa del Amstrad CPC 464/664/6128
- Y un puñao de bugfixes.

Lo que no tiene es ni más velocidad, ni más interface de usuario, ni nada de nada.

Pero me hacía ilusión lo del Snow Effect, que llevaba años con esto... Al final lo ha sacado primero @Weiv, pero bueno...

Hale, pues eso. Si lo probáis, ya me decís.

Ah, que tengo que actualizar las builds de Windows. Hay que compilar... :lol:

En serio, para publicitar emuladores como que no valgo...

TheMartian
rst 0
Mensajes: 25
Registrado: Dom Mar 25, 2018 2:07 pm

Re: SpecIde sigue vivo...

Mensaje por TheMartian » Lun Abr 10, 2023 9:03 pm

Builds de Windows con Snow Effect 100% preciso, en donde siempre:

Aquí...

(Los enlaces están en la descripción; los de Windows 10/11 están compilados con Visual C++ 2019, los otros con MSYS2/GCC 12)

Avatar de Usuario
chernandezba
Sabreman
Mensajes: 408
Registrado: Mié Oct 17, 2007 5:26 pm

Re: SpecIde sigue vivo...

Mensaje por chernandezba » Mar Abr 11, 2023 1:16 pm

TheMartian escribió: Lun Abr 10, 2023 9:03 pm Builds de Windows con Snow Effect 100% preciso, en donde siempre:

Aquí...

(Los enlaces están en la descripción; los de Windows 10/11 están compilados con Visual C++ 2019, los otros con MSYS2/GCC 12)
Muy buenas noticias :)

Hay información de cómo funciona el snow effect? Creo que leí algo hace tiempo en algún foro...
----

ZEsarUX
ZX Second-Emulator And Released for UniX
https://github.com/chernandezba/zesarux

TheMartian
rst 0
Mensajes: 25
Registrado: Dom Mar 25, 2018 2:07 pm

Re: SpecIde sigue vivo...

Mensaje por TheMartian » Mar Abr 11, 2023 5:11 pm

Y tanto... :) (Esto sobre todo lo ha sacado Weiv)

Está este hilo de SpectrumComputing, que hemos montado entre unos cuantos.

Lo relato en castellano aquí:

Lo que llamamos «snow effect» es algo que ocurre cuando la fase de refresco de la memoria colisiona con las lecturas de los datos de vídeo de la ULA.

En la fase de refresco de la memoria el Z80 pone en el bus la dirección contenida en el par de registros IR. La ULA detecta el acceso mediante A15-A14 = 01 y MREQ# a nivel alto. Sin embargo, en la fase de refresco se pone esta dirección y MREQ# se pone a nivel bajo casi inmediatamente, por lo que la ULA no detecta el acceso y deja que el Z80 continue funcionando.

La señal MREQ# es importante porque la señal RAS# deriva de ella. Mientras la señal #RAS está a nivel bajo, los bits 6..0 de la dirección se mantienen fijos. Esto nos da dos posibles casuísticas:

1. El ciclo de refresco ocurre ligeramente antes que el primer acceso de la ULA a memoria de vídeo. (Unos 4 pixels antes)... En este caso, la señal RAS# lo que latchea es el registro R (bits 6..0). Llamaremos a este efecto "nieve".

Este efecto de "nieve" ocurre, por tanto, sólo en las columnas impares, porque coincide con la primera lectura de un par pixel + atributo.

2. El ciclo de refresco ocurre durante el primer acceso de la ULA a memoria de vídeo. En este caso, ya tenemos la dirección de vídeo de la columna impar latcheada (bits 6..0), y lo que hace el Z80 es mantener la señal RAS# a nivel bajo entre las dos lecturas. La segunda columna no puede actualizar la dirección porque RAS# no ha subido en ningún momento. Entonces, este efecto, que llamaremos "duplicación", se manifiesta como la repetición de la columna impar en la columna par siguiente. Este efecto sólo ocurre en columnas pares.

Esto es suficiente para tener la emulación del efecto de nieve en un 48K. Pero resulta que si IR apunta a memoria alta en un 128K o +2 cuando hay una página "lenta" paginada (RAM 1,3, 5, 7) también sale efecto de nieve.

En este caso, la cosa es un poco más rara.

Para el caso "nieve", el dato que se referencia no necesariamente viene de la misma página de vídeo, sino que depende de la RAM que esté en $C000-$FFFF:

Código: Seleccionar todo

 screen          RAM           snow page
    5             1                1
    5             3                1
    5             5                5
    5             7                5
    7             1                3
    7             3                3
    7             5                7
    7             7                7
Sin embargo, para el caso "duplicación", el dato duplicado viene de la página de vídeo, de la columna anterior.

Y creo que esto es todo :)

Avatar de Usuario
chernandezba
Sabreman
Mensajes: 408
Registrado: Mié Oct 17, 2007 5:26 pm

Re: SpecIde sigue vivo...

Mensaje por chernandezba » Jue Abr 13, 2023 7:28 pm

Gracias! Lo estudiaré :)
----

ZEsarUX
ZX Second-Emulator And Released for UniX
https://github.com/chernandezba/zesarux

Responder

¿Quién está conectado?

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