Remake La Armadura Sagrada de Antiriad

Todo sobre la creación, diseño y programación de nuevo software para
nuestro Spectrum

Moderador: Sir Cilve Sinclair

SpeedXP
Herbert
Mensajes: 66
Registrado: Jue Sep 12, 2013 7:37 pm
Ubicación: Sevilla

Remake La Armadura Sagrada de Antiriad

Mensaje por SpeedXP » Jue Sep 12, 2013 9:52 pm

Hola a todos,
este es mi primer mensaje en Speccy.org, así que me presento brevemente. Me llamo Juan Luis, soy de Sevilla y desde hace un tiempo estoy adentrándome en esto de la creación de videojuegos.

No tengo experiencia previa. Mi primer proyecto es la creación de un Remake de La Armadura Sagrada de Antiriad para PC (juego del que guardo gratos recuerdos). Tengo ya las animaciones del personaje y todas las pantallas con sus mapas durezas... Pero la verdad es que, para rizar el rizo y hacerlo 100% fiel al original, me he propuesto estudiar el código ensamblador de la versión Spectrum y así trasladar el comportamiento interno al código nuevo. Sé que llevará mucho tiempo, pero tampoco tengo prisa y lo que quiero es aprender y aprender.

Aunque llevo varios meses estudiando el Z80 (y me he comprado varios libros sobre el tema), la verdad es que me surgen dudas en cuanto a cómo interpretar algunas instrucciones o por qué hacen tal o cual llamada...

Intentaré plantearos aquí lo que me vaya surgiendo, por si tenéis a bien ayudarme a hacer este Remake.

Os dejo mi primera duda (para entrar en calor), hehehe...

Este trozo de código hace unas llamadas a los puertos 93 ($5D) y 127 ($7F) que, por mucho que busco, no logro encontrar una tabla de referencia que me diga en qué repercute meterle un 3 al puerto $5D... El 254 ($FE) he visto que se usa para cambiar el border, en este caso a color negro.

Código: Seleccionar todo

53500 3e03      ld      a,3             
53502 d35d      out     (93),a
53504 d37f      out     (127),a
53506 3e00      ld      a,0             ; carga A con el color negro (0)
53508 d3fe      out     (254),a         ; cambia el border a color negro
53510 3e02      ld      a,2             
53512 3229dc    ld      (56361),a   
53515 cd6adc    call    56426       


Bueno, para ser mi primer mensaje creo que está quedando ya algo largo. :roll:

Agradeceros de antemano todo lo que podáis aportar. Si alguien quiere probar el Remake tal y como lo tengo ahora mismo, que me mande un privado y le paso los fuentes.

Gracias!

Avatar de Usuario
climacus
Sabreman
Mensajes: 411
Registrado: Mar Ago 25, 2009 1:46 pm

Re: Remake La Armadura Sagrada de Antiriad

Mensaje por climacus » Jue Sep 12, 2013 10:23 pm

Bienvenido!
La verdad es que esto engancha mucho.
Sobre tu pregunta, nunca he usado esos puertos, pero a bote pronto, yo suprimiria esos outs a ver como repercute en el juego. Un saludo
Todos mis juegos en formato físico
http://www.matranet.net/boutique/zx/zx.php

SpeedXP
Herbert
Mensajes: 66
Registrado: Jue Sep 12, 2013 7:37 pm
Ubicación: Sevilla

Re: Remake La Armadura Sagrada de Antiriad

Mensaje por SpeedXP » Vie Sep 13, 2013 11:47 am

Gracias, climacus!

he sustituido los

Código: Seleccionar todo

53502 d35d      out     (93),a
53504 d37f      out     (127),a


por sendos NOPs y, la verdad es que no veo alteración alguna en el juego. Estoy por comprarme el libro ese de The ZX Spectrum ULA: How to design a microcomputer, aunque no sé si vendrá información específica sobre estos puertos. ¿Alguien que lo tenga me podría decir si merece la pena comprarlo para tener información de este tipo?

Por otro lado, climacus, aplicando la técnica que dices de "quitar llamadas" o variar el código, he podido deducir qué hacen ciertas partes del código ejecutando el juego con el código modificado parcialmente.

Gracias! :wink:

Avatar de Usuario
climacus
Sabreman
Mensajes: 411
Registrado: Mar Ago 25, 2009 1:46 pm

Re: Remake La Armadura Sagrada de Antiriad

Mensaje por climacus » Vie Sep 13, 2013 7:27 pm

SpeedXP escribió:Gracias, climacus!

he sustituido los

Código: Seleccionar todo

53502 d35d      out     (93),a
53504 d37f      out     (127),a


por sendos NOPs y, la verdad es que no veo alteración alguna en el juego. Estoy por comprarme el libro ese de The ZX Spectrum ULA: How to design a microcomputer, aunque no sé si vendrá información específica sobre estos puertos. ¿Alguien que lo tenga me podría decir si merece la pena comprarlo para tener información de este tipo?

Por otro lado, climacus, aplicando la técnica que dices de "quitar llamadas" o variar el código, he podido deducir qué hacen ciertas partes del código ejecutando el juego con el código modificado parcialmente.

Gracias! :wink:


Eso de andar toquiteando a ver qué pasa es otra de las cosas que más me entretienen.
Un saludo
Todos mis juegos en formato físico
http://www.matranet.net/boutique/zx/zx.php

zup
Freddy Hardest
Mensajes: 666
Registrado: Vie Ago 15, 2008 2:43 pm

Re: Remake La Armadura Sagrada de Antiriad

Mensaje por zup » Vie Sep 13, 2013 8:10 pm

Ayer estuve pensando que quizás estuviera "tocando" puertos de los multiface, para bloquear el equipo o el dispositivo si está conectado. En principio, no coincide con esos puertos (a menos que lo esté mirando mal).

Ahora se me ha ocurrido que quizás sea un puerto de algún otro interfaz (betadisk? disciple?). A saber si lo que quiere es bloquear el interfaz o acceder a sus funciones. Si estás usando una versión "extraña", quizás el tema vaya por ahí.
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start...

SpeedXP
Herbert
Mensajes: 66
Registrado: Jue Sep 12, 2013 7:37 pm
Ubicación: Sevilla

Re: Remake La Armadura Sagrada de Antiriad

Mensaje por SpeedXP » Sab Sep 14, 2013 9:49 pm

zup escribió:Ayer estuve pensando que quizás estuviera "tocando" puertos de los multiface, para bloquear el equipo o el dispositivo si está conectado. En principio, no coincide con esos puertos (a menos que lo esté mirando mal).

Ahora se me ha ocurrido que quizás sea un puerto de algún otro interfaz (betadisk? disciple?). A saber si lo que quiere es bloquear el interfaz o acceder a sus funciones. Si estás usando una versión "extraña", quizás el tema vaya por ahí.


Pues ni idea, zup, algo hará, pero vamos, que no he encontrado información alguna por la web. La versión que estoy usando es la española que empieza con el logo de ERBE. En WOS está.

Sigo bicheando el código y ando por unas rutinas que parece que construyen una tabla precalculada para posicionar los sprites en pantalla...

Lo que más me cuesta es tener que cambiar el "chip" en cuanto a entender las cosas necesarias para hacer un juego en Spectrum... Hay muchas rutinas que, aparentemente no les veo mucho sentido ahora mismo, pero seguro que más adelante les encontraré significado. Los comienzos son siempre algo frustrantes y duros, pero no hay que desanimarse :)

Hecho en falta unos cuantos videotutoriales donde se explique cómo interpretar el desensamblado de un juego cualquiera, porque eso sería la bomba :roll:

saludos!

Avatar de Usuario
na_th_an
Nonamed
Mensajes: 1889
Registrado: Lun May 07, 2007 10:16 am
Ubicación: Andalucía

Re: Remake La Armadura Sagrada de Antiriad

Mensaje por na_th_an » Dom Sep 15, 2013 1:51 pm

No creo que eso sea algo que pueda hacerse en un videotutorial porque, programando a tan bajo nivel, cada juego es un mundo. De todos modos hay herramientas que pueden ayudarte a desensamblar y documentar el código, como esta:

http://pyskool.ca/?page_id=177

Pyskool se ideó para ayudar a desensamblar y documentar Skool Daze, pero puede usarse con cualquier otro juego.

SpeedXP
Herbert
Mensajes: 66
Registrado: Jue Sep 12, 2013 7:37 pm
Ubicación: Sevilla

Re: Remake La Armadura Sagrada de Antiriad

Mensaje por SpeedXP » Lun Sep 16, 2013 1:35 pm

na_th_an escribió:No creo que eso sea algo que pueda hacerse en un videotutorial porque, programando a tan bajo nivel, cada juego es un mundo.


Hola, na_th_an

lo que proponía con lo de los videotutoriales es que, por parte de aquellos que ya dominan el tema de crear juegos, nos explicaran cómo desensamblan ellos un juego, cómo localizan el punto de partida, buscan el bucle principal, qué es lo que, por encima, parece que hacen las rutinas principales... cómo localizar los bloques gráficos del juego, la zona del framebuffer de pantalla, si es que la utiliza, dónde está el sonido y el player... dónde se genera el mapa, el mapa de durezas, las colisiones..., cómo se hace la animación del personaje...
En fin, son tantas cosas que, si alguien te las explicas para un juego tipo de pantalla por pantalla, pues a lo mejor es una referencia buena para identificar "a simple vista" las rutinas del juego que nos interese... y que, seguro, para aquellos que empezamos y tenemos experiencia 0, pues valdría su peso en oro, pues muchas de esas preguntas son las que nos asaltan a la hora de empezar un proyecto de un remake o similar que se base en el código original de un juego.

Entiendo que cada juego es distinto y está programado de diferente manera, pero supongo que, a grandes rasgos, todo juego tiene una estructura parecida, constan de un menú principal, un lugar donde guardan los gráficos, otro para la melodía, otro para el mapa, las variables...

Bueno, gracias por responder y ponerme en la pista del pyskool. Lo he visto por encima y tiene muy buena pinta, voy a probarlo a ver qué tal. :wink:
Saludos!

Avatar de Usuario
na_th_an
Nonamed
Mensajes: 1889
Registrado: Lun May 07, 2007 10:16 am
Ubicación: Andalucía

Re: Remake La Armadura Sagrada de Antiriad

Mensaje por na_th_an » Lun Sep 16, 2013 1:54 pm

Supongo que habrá trucos para encontrar cosas, pero la verdad es que conozco a muchas personas que hacen juegos pero a ninguna que se ponga a desensamblar uno ya existente para ver cómo está hecho. No creo que haya trucos... Supongo que el punto de partida lo dicta el RANDOMIZE USR y a partir de ahí se va leyendo con un monitor o un debugger (como el de Spectaculator) y siguiendo los saltos.

La ingeniería inversa es algo realmente complejo, sobre todo al nivel en el que nos estamos moviendo, y sobre todo para micros como el que nos ocupa. Optimizar hasta niveles insanos y hacer mil guarradas es a veces la única opción, así que lo que puede valer para identificar trozos de un juego puede que no te sirva nunca más para nada.

Opino que si lo que quieres es hacer un remake te basta con conocer bien el juego y observarlo. No creo que sea necesario "calcar" el original.

Avatar de Usuario
climacus
Sabreman
Mensajes: 411
Registrado: Mar Ago 25, 2009 1:46 pm

Re: Remake La Armadura Sagrada de Antiriad

Mensaje por climacus » Lun Sep 16, 2013 2:18 pm

SpeedXP escribió:
na_th_an escribió:No creo que eso sea algo que pueda hacerse en un videotutorial porque, programando a tan bajo nivel, cada juego es un mundo.


Hola, na_th_an

lo que proponía con lo de los videotutoriales es que, por parte de aquellos que ya dominan el tema de crear juegos, nos explicaran cómo desensamblan ellos un juego, cómo localizan el punto de partida, buscan el bucle principal, qué es lo que, por encima, parece que hacen las rutinas principales... cómo localizar los bloques gráficos del juego, la zona del framebuffer de pantalla, si es que la utiliza, dónde está el sonido y el player... dónde se genera el mapa, el mapa de durezas, las colisiones..., cómo se hace la animación del personaje...
En fin, son tantas cosas que, si alguien te las explicas para un juego tipo de pantalla por pantalla, pues a lo mejor es una referencia buena para identificar "a simple vista" las rutinas del juego que nos interese... y que, seguro, para aquellos que empezamos y tenemos experiencia 0, pues valdría su peso en oro, pues muchas de esas preguntas son las que nos asaltan a la hora de empezar un proyecto de un remake o similar que se base en el código original de un juego.

Entiendo que cada juego es distinto y está programado de diferente manera, pero supongo que, a grandes rasgos, todo juego tiene una estructura parecida, constan de un menú principal, un lugar donde guardan los gráficos, otro para la melodía, otro para el mapa, las variables...

Bueno, gracias por responder y ponerme en la pista del pyskool. Lo he visto por encima y tiene muy buena pinta, voy a probarlo a ver qué tal. :wink:
Saludos!


Buenas.

La verdad es que, como dice Na_th_an, el asunto es complicado, y además cada programador usa sus trucos. Yo he mirado el desensamblado de unos cuantos y sorprende ver la cantidad de cosas que se pueden hacer. Además es una manera estupenda de aprender (si es que logras entender lo que hace el código, claro).

Por si te vale, en la revista TODOSPECTRUM, Manuel Arana hacía una sección llamada La Guía del Hacker, en la que analizaba el código de algunos juegos y explicaba más o menos lo que iba haciendo (sin entrar en demasiada profundidad).

Comienza a partir del número 19 y puedes descargártelos de la siguiente dirección: http://microhobby.speccy.cz/zxsf/revistas-ts.htm.

Espero que te sirva de ayuda.

Un saludo
Última edición por climacus el Lun Sep 16, 2013 5:43 pm, editado 1 vez en total.
Todos mis juegos en formato físico
http://www.matranet.net/boutique/zx/zx.php

SpeedXP
Herbert
Mensajes: 66
Registrado: Jue Sep 12, 2013 7:37 pm
Ubicación: Sevilla

Re: Remake La Armadura Sagrada de Antiriad

Mensaje por SpeedXP » Lun Sep 16, 2013 2:24 pm

na_th_an escribió:Opino que si lo que quieres es hacer un remake te basta con conocer bien el juego y observarlo. No creo que sea necesario "calcar" el original.


Llevas toda la razón.
Gracias por el consejo, na_th_an!

SpeedXP
Herbert
Mensajes: 66
Registrado: Jue Sep 12, 2013 7:37 pm
Ubicación: Sevilla

Re: Remake La Armadura Sagrada de Antiriad

Mensaje por SpeedXP » Lun Sep 16, 2013 2:59 pm

climacus escribió:Por si te vale, en la revista TODOSPECTRUM, Manuel Arana hacía una sección llamada La Biblia del Hacker, en la que analizaba el código de algunos juegos y explicaba más o menos lo que iba haciendo (sin entrar en demasiada profundidad).

Comienza a partir del número 19 y puedes descargártelos de la siguiente dirección: http://microhobby.speccy.cz/zxsf/revistas-ts.htm.


Gracias, climacus. Realmente es todo un descubrimiento para mí lo de esos artículos, porque puedo seguirle el hilo con el debug del Spectaculator y me entero mucho mejor de todo. :D

na_th_an, el tema de "bichear" el código original es también para ir familiarizándome con el asm, porque mi intención a largo plazo es también crear mis propios juegos, y me pareció una buena forma de aprender.

saludos!

SpeedXP
Herbert
Mensajes: 66
Registrado: Jue Sep 12, 2013 7:37 pm
Ubicación: Sevilla

Re: Remake La Armadura Sagrada de Antiriad

Mensaje por SpeedXP » Vie Sep 20, 2013 11:10 pm

Hola,

tengo una duda, a ver si alguien me puede responder.

Con el debug del Spectaculator no puedo ver las zonas de memoria que contienen gráficos... Traduce los opcodes en instrucciones legibles, pero si son en realidad gráficos, no te enteras.

Sé que está por ahí el SGE, por ejemplo, que saca los gráficos, pero o soy muy torpe o no le pillo el punto para conocer la posición de memoria en la que está cada gráfico, que me vendría muy bien para saber qué rutinas se encargan de manejar los distintos enemigos, o dibujar los items, etc...

Usando el SkoolKit, como me recomendaron, he pasado el asm a html navegable y me ha identificado muchos bloques gráficos (aunque no he podido conseguir que en el mismo html generado me ponga los gráficos).

Como soy un poco impaciente :roll: me he creado una pequeña utilidad que convierte el listado de DEFB en gráficos legibles. No tenía otra cosa que un notepad y un ftp a mano en el pc de casa, así que lo único que se me ha ocurrido es hacerlo en PHP y que se use desde cualquier navegador :?

Aquí le podéis echar un vistazo...
http://vchamps.net.s108-185.furanet.com/asm2sprite/

Sólo hay que meterle un listado del tipo generado por el SkoolKit (por ejemplo, este trozo corresponde a los caracteres del Antiriad)

Código: Seleccionar todo

25668   DEFB 24,24,24,60,0,6,6,6   
25676   DEFB 6,198,238,124,0,206,220,248   
25684   DEFB 248,220,206,198,0,192,192,192   
25692   DEFB 192,192,198,254,0,198,238,254   
25700   DEFB 254,198,198,198,0,198,230,246   
25708   DEFB 254,222,206,198,0,252,206,198   
25716   DEFB 198,198,230,126,0,252,206,198   
25724   DEFB 198,254,192,192,0,252,206,198   
25732   DEFB 198,230,124,14,0,252,206,198   
25740   DEFB 198,254,220,206,0,254,198,192   
25748   DEFB 124,6,198,254,0,254
25760   DEFB 0,198,198,198,198,198,238,124   
25768   DEFB 0,198,198,198,238,124,56,16   
25776   DEFB 0,198,198,198,198,254,238,198   
25800   DEFB 0,254,206,28,56,112,230,254   
25808   DEFB 0,124,238,198,198,198,238,124   
25816   DEFB 0,56,24,24,24,24,24,24   
25824   DEFB 0,252,198,6,28,112,224,254   
25832   DEFB 0,252,198,6,60,6,198,252   
25840   DEFB 0,192,192,192,216,254,24,24   
25848   DEFB 0,254,198,192,254,6,198,124


Como está hecho a la ligera, pues no controla errores y demás. Aparte el formato debe ser el que pongo en el listado de ejemplo.
Dirección + tab + DEFB + espacio + datas separados por comas y sin espacios.

Bueno, espero que a alguien, como curiosidad, le sirva para ver qué hay detrás de esos DEFBs ...

Un saludo,
PD: lo que hace el aburrimiento... :mrgreen:

SpeedXP
Herbert
Mensajes: 66
Registrado: Jue Sep 12, 2013 7:37 pm
Ubicación: Sevilla

Re: Remake La Armadura Sagrada de Antiriad

Mensaje por SpeedXP » Sab Sep 21, 2013 12:54 am

Como alguno de vosotros me ha preguntado por el tema del Remake, os dejo un vídeo donde se puede ver algunas cosas de lo que hay hecho hasta ahora...

http://www.youtube.com/watch?v=1wuMbPOurr0


Un saludo!

LeoCZ
Jack The Nipper
Mensajes: 138
Registrado: Mié Oct 19, 2011 10:56 pm
Ubicación: Neuquén - Argentina

Re: Remake La Armadura Sagrada de Antiriad

Mensaje por LeoCZ » Sab Sep 21, 2013 5:07 pm

Muy bueno!! SpeedXP has avanzado bastante, los movimientos del personaje funcionan muy bien. Los juegos de Palace Software son geniales, recuerdo todavía a Antiriad en la revista Microhobby donde estaba todo el grupo de programadores, dentro de los cuales estaba un artista grafico Dan Malone que diseñó los gráficos y el famoso comic.
Estuve probando el ASM2Sprite con tu listado de ejemplo pero me en vez de los gráficos aparece una barra negra de 8x176 pixel, algo debo estar haciendo mal :?
CZ Spectrum - Tk90x - ZX Spectrum+ - ZX Spectrum +2A

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 15 invitados