Mensaje
por zup » Lun Sep 15, 2014 11:42 am
Llevo una temporada que llego tarde a todo... incluso a esto.
Me he tirado toda la tarde intentando hacer la versión +3 de este juego, y he tenido que arreglarla a martillazos.
Empecemos (a ver si he acertado en todo):
- El juego está comprimido con zx7.
- El cargador BASIC contiene un cargador en c/m, la rutina descompresora de zx7 y la pantalla de presentación comprimida.
- El cargador BASIC empieza su ejecución en 23755, y llama a la rutina descompresora del zx7 para descomprimir la pantalla.
- Posteriormente se llama a la ROM de una manera un poco retorcida para cargar un bloque de 17217 bytes en la dirección 44223.
- Este bloque se descomprime a partir de la dirección 24200, y tiene una longitud final de 35505 bytes.
- Al final se salta a la dirección 24200.
El problema retorcido que me ha tocado la moral: cargas los bloques de datos, saltas al inicio del juego y... nada. Se oye la música, no hay nada en pantalla. Al empezar el juego, los atributos de la zona de marcadores son erróneos.
La solucion a martillazos: he tenido que salvar el área de variables y el BASIC (desde 23552 a 24200). Una vez cargado el código, lo pongo en su sitio con un LDIR, y salto a 24200. El juego ya funciona correctamente.
Lo que verdaderamente me intriga (me he metido algo con el depurador, pero poco) es qué narices necesita de esa zona para poder mostrar los atributos correctamente. He pensado que quizás sería alguna variable del sistema, pero cambiando INK y PAPER en el cargador no me servido.
Es la primera vez que me pasa... incluso en el Ninjajar! (que por primera vez en la era mojona tiene un cargador c/m), no he tenido ningún problema. ¿Alguien me dice qué estaba haciendo mal?
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start...