Cuestiones sobre paginación de memoria 128K

Avatar de Usuario
Haplo
Mensajes: 368
Registrado: 05 Oct 2015, 13:51
Ubicación: Ciudad Real

Cuestiones sobre paginación de memoria 128K

Mensaje por Haplo » 15 Feb 2016, 17:21

Llega un momento en la vida de todo juego en desarrollo que empieza a chocarse con la limitación de memoria...

Asi que estuve aprendiendo cómo funciona el tema de la paginación de memoria y me ha sorprendido lo sencillete que es, en mis tiempos me parecía casi magia :maestro: . El caso es que me ha llamado la atención el modo especial adicional del los +2A y +3, el ALL-RAM.
No es que tenga mucho misterio, pero me ha surgido una duda que no he podido responder con lo que visto:

¿son compatibles simultáneamente?

Es decir, si por ejemplo tengo activado el mapa de memoria ALL-RAM 4-5-6-7 ¿ puedo ir cambiando la página que cae entre xC000h y xFFFFh de la manera en que se hace en el modo normal? ¿o lo más parecido es commutar entre los 4 esquemas de memoria especiales?

También creo haber leído que el DivIDE es incompatible con el modo ALL-RAM.

Saludetes.

Avatar de Usuario
antoniovillena
Mensajes: 2621
Registrado: 27 Sep 2015, 20:41

Re: Cuestiones sobre paginación de memoria 128K

Mensaje por antoniovillena » 15 Feb 2016, 19:52

No. El modo all RAM no te permite paginar simultáneamente lo que cae en memoria alta. Pero ten en cuenta que tienes 4 modos all RAMs distintos, cada uno con su combinación. Puedes ir saltando entre estos 4 modos, con cuidado de no cambiar ni lo que tienes en programa (PC) ni en pila (SP). Lo del DivIDE no lo sé porque no lo he programado. Pero programar e ir conmutando entre los 4 modos all-RAM es complicadillo por lo que te he comentado antes.

La ventaja es que puedes direccionar los 64k del Z80 (en lugar de los 48K) sin paginación (normalmente la ROM no se usa en los juegos). La desventaja es que sólo es compatible en +2A/+3, por lo que raramente se usa.

Avatar de Usuario
mcleod_ideafix
Mensajes: 831
Registrado: 27 Sep 2015, 00:14
Ubicación: Jerez de la Frontera
Contactar:

Re: Cuestiones sobre paginación de memoria 128K

Mensaje por mcleod_ideafix » 15 Feb 2016, 23:10

Haplo escribió:¿son compatibles simultáneamente?
A lo que te ha contestado Antonio, añado poca cosa: no pueden usarse simultáneamente porque precisamente hay un bit en el registro 1FFD que indica si vas a usar la paginación "estilo 128K" o la paginación "estilo +3", por lo que las dos a la vez, no puedes.
Haplo escribió:También creo haber leído que el DivIDE es incompatible con el modo ALL-RAM.
El model original, el 57c es incompatible en el sentido de que en modo all-RAM puede haber colisiones entre el bus de datos desde el DivIDE y el bus de datos desde la RAM del Spectrum, y además la señal ROMCS para inhabilitar las ROMs no inhabilita la RAM que hubiese en espacio de ROM. En el ZX-Uno no existe tal colisión, y si el DivMMC está activado, cuando le toque paginarse, se pagina, haya lo que haya en los primeros 16K del espacio direccionable. Es decir, se comporta como debería hacerlo lógicamente.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
chernandezba
Mensajes: 841
Registrado: 02 Oct 2015, 23:35

Re: Cuestiones sobre paginación de memoria 128K

Mensaje por chernandezba » 15 Feb 2016, 23:39

Por cierto, yo encontré un juego que usa ese modo... El livingstone supongo 2, la versión +2A (hay dos cargas, una 48/128 y otra para +2A). En el juego intercambia continuamente de páginas Ram 4563 y 4763, de tal manera que usa un doble buffer de pantalla...
----

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

Avatar de Usuario
Haplo
Mensajes: 368
Registrado: 05 Oct 2015, 13:51
Ubicación: Ciudad Real

Re: Cuestiones sobre paginación de memoria 128K

Mensaje por Haplo » 17 Feb 2016, 20:50

Entendido, ya me parecia a mi raro que fuera así, pero por preguntar que no quede jejej

Una cuestión más relacionada con la memoria y que he leído en la descripción del modo radastaniano:
- 4 páginas de pantalla disponibles: 4000h, 6000h, C000h, E000h. Estas dos últimas, en el banco 7 de memoria. Para cambiar de pantalla, por ejemplo de la 4000h a la 6000h, o de la C000h a la E000h, hay que poner un 1 en el bit 0 del puerto $FF (ya que esta característica está heredada de los modos de Timex implementados)
Me parece muy interesante y quizás utilice este sistema para el juego. Me simplificaría mucho el tema gráfico.
¿Este funcionamiento está soportado por el ZesarUX? ¿alguien lo ha probado?

Avatar de Usuario
chernandezba
Mensajes: 841
Registrado: 02 Oct 2015, 23:35

Re: Cuestiones sobre paginación de memoria 128K

Mensaje por chernandezba » 18 Feb 2016, 00:17

Hola

ZEsarUX lee ese bit del puerto ff de timex pero solo para los modos de vídeo de timex. En modo ulaplus no se lee para nada.
Lo que sí que se lee es el bit 3 del puerto 32765, que indica si la pantalla viene de la RAM 5 o la 7. Es decir, puedes tener dos pantallas en modo ulaplus (o modo 128 normal tal cual), a diferencia de las 4 que ofrece la especificación de zxuno.
No sé en qué momento el equipo de zxuno metió ese bit de timex en los modos ulaplus, pero yo no me enteré, jeje
----

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

Avatar de Usuario
Haplo
Mensajes: 368
Registrado: 05 Oct 2015, 13:51
Ubicación: Ciudad Real

Re: Cuestiones sobre paginación de memoria 128K

Mensaje por Haplo » 18 Feb 2016, 00:26

ejem, con razón no me funcionaba el test que estaba haciendo hace un rato... bueno pues aclarado el misterio jeje
Eso sí, te agradecería una jartá que lo incluyeras en la lista de TO DO para un futuro cercano :okidoki;

Avatar de Usuario
mcleod_ideafix
Mensajes: 831
Registrado: 27 Sep 2015, 00:14
Ubicación: Jerez de la Frontera
Contactar:

Re: Cuestiones sobre paginación de memoria 128K

Mensaje por mcleod_ideafix » 18 Feb 2016, 15:14

chernandezba escribió:No sé en qué momento el equipo de zxuno metió ese bit de timex en los modos ulaplus, pero yo no me enteré, jeje
Se metió sólo, como quien dice. Es sencillamente la consecuencia de cambiar la dirección base de la exploración de pantalla de $0000 a $2000, que es lo que se hace en Timex. Esto significa que automáticamente, cualquier modo gráfico que implemente la ULA, presente o futuro, puede comenzar a explorar en cualquiera de esas dos direcciones (están referidas no al comienzo del espacio de direcciones de la CPU sino al comienzo del bloque de 16K correspondiente, que puede ser de la página 5 o de la 7).

En ZesarUX no debería ser difícil implementar esto: si para el modo Radastaniano exploras desde la dirección $0000 de la página 5 o la 7, ahora sencillamente coge el bit 0 del registro $FF y úsalo con un XOR en el bit 13 de la dirección de exploración.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
chernandezba
Mensajes: 841
Registrado: 02 Oct 2015, 23:35

Re: Cuestiones sobre paginación de memoria 128K

Mensaje por chernandezba » 19 Feb 2016, 22:40

Hola

Si, es muy fácil agregarlo. Lo añadiré en breve ;)
Lo que sí que he añadido, y siguiendo la 'estela' del zxuno, como viene siendo costumbre en mi...jeje... Es los timings de pentagon.
Por fin he podido ver demos como la mescaline casi perfecta... Y digo casi porque aunque el timing es perfecto, la rutina de refresco de pantalla no, y hay alguna columna que se 'sale' de cómo se debería ver.. Cosa muy complicada de corregir, que se presenta en todos los timings, y que requeriría mayor procesado en paralelo y aumentar la carga de cpu...
Resumiendo, que al menos con esos timings de pentagon, las músicas se oyen bien, y los efectos también, a diferencia de ejecutarlas con timings de 128 en el que se oyen lentas las músicas y/o los efectos de color en Hi-res salen completamente desfasados

Saludos
César
----

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

Avatar de Usuario
chernandezba
Mensajes: 841
Registrado: 02 Oct 2015, 23:35

Re: Cuestiones sobre paginación de memoria 128K

Mensaje por chernandezba » 20 Feb 2016, 16:36

Hola
Ya he agregado soporte para pantalla shadow de timex en modo ulaplus radastaniano.
En cuanto suba una nueva beta lo podréis probar (o si compiláis el último source, como siempre)

Saludos
César
----

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

Responder