Buenas, hay van algunas respuestas que creo pueden ser adecuadas:
Tienes varias soluciones para lo de la colisión:
- antes de hacer esa resta comprueba cual de las dos
coordenadas
(que llamaremos x1 y x2) es mayor y después haz la resta ya de la
forma
correcta para que no te de signo negativo
Gracias a tí también, Dani. Justo después de escribir el mensaje se me
ocurrió probar eso. Me he hecho con el RSC, he estado probando y
averiguando los comandos de uso hasta que he podido ensamblar algo
(antes metía todo a mano y muchos errores venían precisamente de ahí).
Pero no he conseguido avanzar mucho. Voy a seguir probando :(
- también puedes, una vez hecha la resta, calcular el
valor
absoluto del resultado. Dado que este viene dado en complemento a 2
si es
negativo (o eso creo, nunca lo comprobé en el Z80!!) deberás mirar
el bit de
signo (el de más a la izquierda del todo) y en caso de ser un 1 (es
decir,
nº negativo), pues tendrás que calcular el complemento a 2 de dicho
valor:
BIT 7,A //suponiendo en A el
resultado de la resta
JR NZ, positivo //como Flag Z
== 0 -->
signo 0 = positivo
NEG //calcula complemento a 2
de A,
es decir, lo pone en positivo
positivo: ...
Tambien, si no me equivoco y dado que el valor de A
en tu
caso viene de hacer una resta (SUB) pues dicha instrucción afecta al
flag de
signo, por lo que puedes usar JP P, etiqueta de la siguiente forma:
JP P, positivo
NEG
positivo: .....
Lo malo es que el JP ocupa más que el JR (aunque te ahorras el BIT).
Bueno,
eso como tu veas.
Gracias muchas, ya veo que tengo nuevos caminos de exploración, jejeje
:)
De todos modos, yo te aconsejo que la colisión entre
objetos,
por lo menos como primera aproximación, la hagas considerando
intersección
entre rectángulos
El código basic que incluí iba por esos derroteros. A ver si por lo
menos soy capaz de que detecte eso, ya ni hablemos colisiones bit a
bit :)
¡Uff menuda chapa que te acabo de meter!. No sé si te habrá servido
de algo,
si no entiendes, vuelve a preguntar que cualquiera de los sabios de
este
foro te va a responder ;-) Y de nuevo disculpar mis errores porque
casi no
hice nada en este ensamblador y lo tengo muy verde
Para decir que no sabes mucho de Z80, te has marcado un buen esfuerzo
en responder, y eso te lo agradezco muchísimo. Es que estoy como loco
porque alguien me de una idea para seguir avanzando, no vaya a ser que
al final me arrepienta y vuelva al BASIC, jejejejeje :)
Un saludete,
Juanma