[Resuelto] Como se crean juegos en ROM?

Dudas, cuestiones, sugerencias y peticiones en general sobre el proyecto / Questions and requests about the project
Avatar de Usuario
antoniovillena
Mensajes: 2611
Registrado: 27 Sep 2015, 20:41

Re: Como se crean juegos en ROM?

Mensaje por antoniovillena » 01 Oct 2016, 12:18

spark2k06 escribió: ld a,(interrupt) ; Interrupt (bit 2 contains IFF2, 1=EI/0=DI) -> SNA Format (worldofspectrum.org)
bit 0,a ; -> He observado un snapshot con EI que esta este byte a $01 y otro con DI que esta a $00 (a que se refiere entonces con que el bit 2 contiene IFF2???)
El bit IFF2 es un flag que se emplea en las NMI. Es el encargado de recordar el estado de IFF antes de la NMI. No te va a servir de nada porque no hay ninguna instrucción con la que puedas setear este flag, la única forma es mediante NMI. Así que ignora este bit.

Avatar de Usuario
spark2k06
Mensajes: 1150
Registrado: 12 Feb 2016, 13:58

Re: Como se crean juegos en ROM?

Mensaje por spark2k06 » 01 Oct 2016, 13:53

De acuerdo, ignoro el bit 2. El bit 0 entonces es EI/DI verdad? Y el resto de bits? tienen algún significado?

Enviado desde mi thor mediante Tapatalk

Avatar de Usuario
spark2k06
Mensajes: 1150
Registrado: 12 Feb 2016, 13:58

Re: Como se crean juegos en ROM?

Mensaje por spark2k06 » 01 Oct 2016, 22:11

spark2k06 escribió:
ld a,(interrupt) ; Interrupt (bit 2 contains IFF2, 1=EI/0=DI) -> SNA Format (worldofspectrum.org)
bit 0,a ; -> He observado un snapshot con EI que esta este byte a $01 y otro con DI que esta a $00 (a que se refiere entonces con que el bit 2 contiene IFF2???)
call nz,setei
Me voy a autoresponder, esa observación que hice era incorrecta... en el código me refiero al valor Interrupt del SNA, pero la observación de $00 y $01 la estaba haciendo sobre otro byte que ya lo tengo bien gestionado, concretamente el IntMode:

ld a,(intmode)
cp $00
call z, im0
cp $01
call z, im1
cp $02
call z, im2


De todas formas, todo el lío lo he tenido por la forma de detallar el formato en worldofspectrum... me parece mucho mas clara la que viene en:

http://faqwiki.zxnet.co.uk/wiki/SNA_format

y aquí sí, queda mucho mas claro que el valor del offset $13 del formato SNA, corresponde únicamente al IFF2, y a través del bit 2, el resto no se usan:

The file begins with a 27-byte header containing the Z80 registers:

$00 I
$01 HL'
$03 DE'
$05 BC'
$07 AF'
$09 HL
$0B DE
$0D BC
$0F IY
$11 IX
$13 IFF2 [Only bit 2 is defined: 1 for EI, 0 for DI]
$14 R
$15 AF
$17 SP
$19 Interrupt mode: 0, 1 or 2
$1A Border colour

Y este bit sí hay que tenerlo en cuenta, pero únicamente para lanzar un EI o dejarlo en DI.

Dicho lo cual, a ver si preparo un resumen de todo el proceso y comparto el código...

Gracias a antonio por las pistas y la ayuda ofrecida, y Cesar por su emulador ZEsarUX, imprescindible para depuración.

Avatar de Usuario
spark2k06
Mensajes: 1150
Registrado: 12 Feb 2016, 13:58

Re: Como se crean juegos en ROM?

Mensaje por spark2k06 » 05 Oct 2016, 13:06

Imagen

Aquí tenéis el código:

https://github.com/spark2k06/zxuno/tree ... /loader128

Y próximamente un vídeo :-)

Como última opción he puesto la ROM SE Basic rooteada para poder reemplazar este pack de ROMS por otro, pero sería interesante hacer más amigable esta actualización mediante un menú con las ZX1 de ROMS desde la SD.

Las ROMS que se creen de 128K deben marcarse como ROOT en el menú, de lo contrario se quedará colgado tras el volcado de la VRAM. Sería interesante también la adaptación del ZX1Rompack para permitir ROMs de 128k y que se marquen como ROOT.

Saludos!
Última edición por spark2k06 el 24 Oct 2016, 16:49, editado 4 veces en total.

Avatar de Usuario
spark2k06
Mensajes: 1150
Registrado: 12 Feb 2016, 13:58

Re: Como se crean juegos en ROM?

Mensaje por spark2k06 » 06 Oct 2016, 08:50

Y ahora sí, el vídeo de demostración:

phpBB [media]


Cualquier optimización del código del loader es bienvenido para tener menos líneas fantasma en la imagen de presentación de la carga de la "ROM" de 128k, ya que ahora mismo ocupa 351 bytes y se notan al ser volcados a la VRAM.
Última edición por spark2k06 el 15 Nov 2016, 06:23, editado 1 vez en total.

Avatar de Usuario
spark2k06
Mensajes: 1150
Registrado: 12 Feb 2016, 13:58

Re: Como se crean juegos en ROM?

Mensaje por spark2k06 » 06 Oct 2016, 12:13

Una cosa que se me ocurre para bordarlo, evitando estas líneas fantasmas durante la carga...

Imagen

Sería almacenar el loader en espacio libre de la pila del snapshot en lugar de la VRAM... y no se notaría la diferencia respecto a la carga de ROMs procedentes de snapshots de 48K en ZXUno :-).

Todo se andará....

Avatar de Usuario
spark2k06
Mensajes: 1150
Registrado: 12 Feb 2016, 13:58

Re: Como se crean juegos en ROM?

Mensaje por spark2k06 » 26 Mar 2017, 07:00

spark2k06 escribió:Imagen

Aquí tenéis el código:

https://github.com/spark2k06/zxuno/tree ... /loader128
Por cierto, si alguien está interesado en este pack para cargarlo fácilmente con .romsupgr, lo dejo compartido en mi servidor casero:

PackDinamic2A.ZX1

Añadid excepción de seguridad en vuestro navegador cuando os pida, es SSL pero no está registrado en una entidad certificadora. La contraseña os la facilito por privado.

Saludos.

Responder