Hola de nuevo,
Pues sí que va bien la cosa, ayer mismo empiezo a usar algo más que
llamadas a las rutinas 4ah y 4dh de la BIOS y ya estoy con problemas
hasta el cuello :)
Gracias a los que se tomaron con sentido del humor mi mensaje, jejeje,
prometo seguir y sobre todo hacer juegos como churros (ahí queda eso :
))
El primer escollo es la detección de choques.
En Basic, más o menos haría así (no sé si es muy elegante):
x1,x2=coord. x de los sprites 1 y 2 (16x16)
y1,y2=coord. y de los sprites 1 y 2
if abs(x1-x2)<16 and abs(y1-y2)<16 then hostiazo padre
Pero en asm, una vez tengo en D la coordenada x del 1ºsprite, y en el
acumulador acabo de leer la del segundo:
LD HL,6913
CALL 4ah
LD D,A
LD HL,6945
CALL 4ah
SUB D
CP 16
JP M, hostiazo
Bueno, habría que comparar las coord y también, pero pongo sólo la x
para abreviar.
El caso es que funciona bien siempre y cuando x1<x2, pues si la coord.
x del sprite 1 es mayor que la del 2, entonces la cosa se desmadra y
chocan a una gran distancia. Supongo que tendrá algo que ver el hecho
de que si x2>x1 entonces la resta de negativo, y ahí igual se jode la
cosa. Pero por más que miro en el librillo que tengo, no encuentro
cómo arreglarlo. Además, ¿cómo hacer como en basic la función abs(x) e
ignoro el signo?
Otra cosa es que no entendí muy bien si se puede hacer en asm algo
como:
if a<5 then...
o
if a>5 then...
Vamos, se comparar igualdades, pero ¿cómo se hace para ver si es mayor
o menor que un valor?
Ayyy, siento estas preguntas y no debería hacerlas, pero es que llevo
toda la mañana con el libro y no saco nada en claro, y ayer acabé
abatido :(
Un saludo y gracias,
Juanma