Programar nuevos modos y snapshots

Software para o relacionado con el core ZX Spectrum / Software for or related to the ZX Spectrum core
Responder
Avatar de Usuario
Uto
Mensajes: 1394
Registrado: 17 Dic 2015, 16:39

Programar nuevos modos y snapshots

Mensaje por Uto » 01 Nov 2016, 14:57

Ayer probando el juego en este hilo experimenté alguna cosa rara, que tiene toda su lógica:

viewtopic.php?p=9926#p9926

Al cargarlo todos los colores del juego estaban "rotos" y se arregló al poco.

La causa de fondo es que si haces un snapshot, este graba la memoria, registros, etc. pero desconoce el estado de los registros de ULAplus. Algo similar pasaría con los modos Timex o Radastan, si se está jugando a un juego en estos modos, y se usa la NMI de ESXDOS para grabar un snapshot, el snapshot grabado no graba el modo en el que estás, por lo que si vuelves a cargar el snapshot más tarde, no se va a ver bien (si usabas ULAplus no va a recomponer la paleta, si usabas modos Timex no los va a restaurar con lo cual lo que se ven en pantalla se verá mal, y si usas Modo Radastan ya no es que se vea mal, es que se verá basura en pantalla. Es más, en modo radastaniano ni siquiera se ve bien todo el interfaz de la NMI al pulsarla, por razones lógicas (aunque claro, si pulsas la S se graba)

Obviamente el problema tiene muy mala solución, porque la única manera de que estos juegos sean "snapshoteables" es que los propios juegos tengan esto en cuenta y

1) Cambien al modo necesario cada x segundos
2) Establezcan la paleta cada X segundos

Algo así parece hacer dicho juego, porque la paleta carga fatal y de repente se pone bien, pero sospecho que andar haciendo los OUTs pertinentes cada dos por tres puede ser un grave problema de rendimiento.

La cosa tiene difícil solución, dado que el NMY.SYS es código cerrado, y además probablemente no hay sitio en el estándar SNA para guardar los registros de ULAPlus y ZX-Uno. Quizá si Andrew Owen acaba haciendo ese Uno-DOS, pudiera tenerlo en cuenta y grabar/y cargar un fichero .reg junto al SNA, otra cosa no se me ocurre.

¿Se os ocurren soluciones que los programadores de juegos en estos modos pudieran aplicar para permitir soporte de snapshots cómodamente?

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

Re: Programar nuevos modos y snapshots

Mensaje por chernandezba » 01 Nov 2016, 21:56

Yo por mi parte en ZEsarUX utilizo un formato propio de snapshots (.zx), aparte que también soporto grabar snapshots en otros formatos. En el caso del .zx tengo soportados los casos de paleta ulaplus y otras cosas no tan comunes, como los registros internos del zxuno.
Por otra parte, el formato de spectaculator, el .szx, es extensible por definición, cualquiera puede agregarle extensiones propias.
SNA en cambio es un formato muy simple y un tanto chapucero bajo mi punto de vista ;)
----

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

Avatar de Usuario
Uto
Mensajes: 1394
Registrado: 17 Dic 2015, 16:39

Re: Programar nuevos modos y snapshots

Mensaje por Uto » 01 Nov 2016, 22:15

chernandezba escribió: Por otra parte, el formato de spectaculator, el .szx, es extensible por definición, cualquiera puede agregarle extensiones propias.
SNA en cambio es un formato muy simple y un tanto chapucero bajo mi punto de vista ;)
Ante todo es muy antiguo, pero es en el que graba ESXDOS. Otro OS podría optar por otros formatos.

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

Re: Programar nuevos modos y snapshots

Mensaje por mcleod_ideafix » 01 Nov 2016, 23:13

Uto escribió:¿Se os ocurren soluciones que los programadores de juegos en estos modos pudieran aplicar para permitir soporte de snapshots cómodamente?
Desde el punto de vista del propio juego, si el snapshot no se grabó con esa información, poco puede hacer, salvo lo que comentas, de que cada X tiempo compruebe si todo está bien y si no, poner la paleta y demás.

Desde el punto de vista de ESXDOS o cualquier otro launcher de snapshots, la solución es bien sencilla: soportar el formato de snapshots SZX, que se creó precisamente para paliar estas deficiencias.

Desde el punto de vista del usuario: no uses snapshots. Usa TAPs siempre que sea posible. Un snapshot debería ser el último recurso para lanzar un juego, si lo demás falla. Lanzar el juego con su cargador (o sea, desde un TAP) es la única forma de que el juego se inicialice correctamente siempre. Los formatos SNA y Z80 son muy muy limitados y hasta tendrían problemas con juegos que usen el modo all-RAM del +2A/+3. Por supuesto, cualquier hardware que use el juego y que no estuviera presente en un Spectrum original no será inicializado.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

azesmbog
Mensajes: 319
Registrado: 17 Feb 2016, 23:07

Re: Programar nuevos modos y snapshots

Mensaje por azesmbog » 02 Nov 2016, 08:25

Здравствуйте.
У меня вопрос простой. про самые обычные snapshots
В прикрепленном файле snapshot, созданный программой sjasmplus
В любых других эмуляторах и в Speccy2010 работает правильно, как задумано автором :)
Может кого-то не затруднит запустить файл и сделать фото экрана на ZX-UNO ?
Timing Pentagon.
Спасибо.
Adjuntos
test141016(pent).zip
(1.59 KiB) Descargado 196 veces

Avatar de Usuario
Uto
Mensajes: 1394
Registrado: 17 Dic 2015, 16:39

Re: Programar nuevos modos y snapshots

Mensaje por Uto » 02 Nov 2016, 09:55

mcleod_ideafix escribió:
Uto escribió:¿Se os ocurren soluciones que los programadores de juegos en estos modos pudieran aplicar para permitir soporte de snapshots cómodamente?
Desde el punto de vista del propio juego, si el snapshot no se grabó con esa información, poco puede hacer, salvo lo que comentas, de que cada X tiempo compruebe si todo está bien y si no, poner la paleta y demás.
Quizá sea algo a tener en cuenta por los programadores de juegos para modo radastaniano y demás, comprobar si el modo radastaniano está puesto o no cuando debería estarlo, y si no lo está ponerlo y activar paleta. Lo que pasa es que según cuando se haga y como se haga eso son al menos 3 o 4 instrucciones en assembler (el OUT para seleccionar RADASCTRL, el IN para leer el dato, el CP para ver si hay un 3 y el JP Z o el salto que sea) por lo que puede ser poco óptimo. ¿alguna manera mejor?

Por otro lado es fácil saber si está activo o no el modo radastaniano, y la paleta de ULAPlus supongo que es cuestión de leer un valor y compararlo con algo, que viene a ser lo mismo (en instrucciones) que lo que se hace con el modo radastaniano, pero con modos Timex no sé muy bien como podría detectarse si está activado. Si un juego usa ambas cosas (Timex más ULAPlus) y se ve que la paleta de ULAPLus está mal puesta, el juego puede asumir que tampoco estará puesto el modo Timex, pero si solo usa modo Timex no se me ocurra nada :-?

Desde el punto de vista de ESXDOS o cualquier otro launcher de snapshots, la solución es bien sencilla: soportar el formato de snapshots SZX, que se
creó precisamente para paliar estas deficiencias.
Pues sí, lo idea sería que se diera soporte a un formato de snapshot más avanzado. Es más, idealmente al entrar en la NMI debería cambiar a "modo normal con paleta estándar" y al salir volver a poner el modo que hubiera antes con la paleta que fuera. Eso permitiría no solo hacer snapshots decentes, sino no tener que hacerlo a ciegas, y poder usar otras opciones del menú NMI como cambiar de .tap por ejemplo.
Desde el punto de vista del usuario: no uses snapshots. Usa TAPs siempre que sea posible. Un snapshot debería ser el último recurso para lanzar un juego, si lo demás falla. Lanzar el juego con su cargador (o sea, desde un TAP) es la única forma de que el juego se inicialice correctamente siempre. Los formatos SNA y Z80 son muy muy limitados y hasta tendrían problemas con juegos que usen el modo all-RAM del +2A/+3. Por supuesto, cualquier hardware que use el juego y que no estuviera presente en un Spectrum original no será inicializado.
Sí, eso está claro, todo en TAP si es posible. El problema es que con el setup actual de ESXDOS es imposible hacer un snapshot de un juego radastaniano/timex/ulaplus para seguir más tarde, porque te graba un SNA.

Avatar de Usuario
Uto
Mensajes: 1394
Registrado: 17 Dic 2015, 16:39

Re: Programar nuevos modos y snapshots

Mensaje por Uto » 02 Nov 2016, 10:50

azesmbog escribió:Здравствуйте.
У меня вопрос простой. про самые обычные snapshots
В прикрепленном файле snapshot, созданный программой sjasmplus
В любых других эмуляторах и в Speccy2010 работает правильно, как задумано автором :)
Может кого-то не затруднит запустить файл и сделать фото экрана на ZX-UNO ?
Timing Pentagon.
Спасибо.
This is what I see on my ZX-Uno, with Pentagon timing and ROM:

https://www.dropbox.com/s/slkqiuknaw5vf ... 2.JPG?dl=0

azesmbog
Mensajes: 319
Registrado: 17 Feb 2016, 23:07

Re: Programar nuevos modos y snapshots

Mensaje por azesmbog » 02 Nov 2016, 14:25

Uto escribió: This is what I see on my ZX-Uno, with Pentagon timing and ROM:
Спасибо. Это именно то, что я хотел увидеть
Imagen

Вот эта ошибка.
Два варианта. или ULA неправильно работает, или другой вариант - ESXDOS неправильно открывает snapshot
Получается какая то команда или совсем выпадает, или короткая команда.
Можете открыть в любом эмуляторе, например в Spectaculator - там показывает все верно.
Но самое интересное - что та же самая программа ,сохраненная в .TRD - работает совершенно правильно!!
Значит с таймингами команд Т80 все верно.
Загадка.
Adjuntos
test141016(pent)+TRD.zip
(3.43 KiB) Descargado 196 veces

Responder