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...
En serio, para publicitar emuladores como que no valgo...
SpecIde sigue vivo...
Moderador: Sir Cilve Sinclair
-
- rst 0
- Mensajes: 25
- Registrado: Dom Mar 25, 2018 2:07 pm
Re: SpecIde sigue vivo...
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)
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)
- chernandezba
- Sabreman
- Mensajes: 408
- Registrado: Mié Oct 17, 2007 5:26 pm
Re: SpecIde sigue vivo...
Muy buenas noticiasTheMartian 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)
Hay información de cómo funciona el snow effect? Creo que leí algo hace tiempo en algún foro...
-
- rst 0
- Mensajes: 25
- Registrado: Dom Mar 25, 2018 2:07 pm
Re: SpecIde sigue vivo...
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:
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
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
Y creo que esto es todo
- chernandezba
- Sabreman
- Mensajes: 408
- Registrado: Mié Oct 17, 2007 5:26 pm
Re: SpecIde sigue vivo...
Gracias! Lo estudiaré
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 21 invitados