Lo más importante:
1-El orden de las animaciones. Son parado, izquierda, derecha, arriba, abajo (el mismo orden de los bits
del Joystick)
2-Asigno un número a cada dirección. 0:parado, 1:izquierda, 2:derecha, 3:arriba, 4:abajo. De esta
manera puedo usar el número como índice para las animaciones y para las rutinas de movimiento
3-Se crea una tabla de salto a las rutinas de movimiento, en la que aparecen en el mismo orden de las
animaciones y de los bits del joystick. Para hacer el salto se usa el STACK y RTS:
LDA MOVHI,X (X es la dirección, MOVHI es el HIGH byte de la rutina de movimiento)
PHA
LDA MOVLO,X
PHA
RTS
(OJO!->Si se usa esta técnica, el byte MOVLO tiene que contener el LOWByte de la rutina de
movimiento - 1, ya que el RTS transfiere al Program counter lo que hay en el stack y le SUMA 1.
CONSEJO->Si las subrutinas de movimiento están en la misma página de memoria, todas tienen el
mismo HIGH byte y te ahorras meterlo en una tabla....será una CONSTANTE)
4-El movimiento tiene 1 byte, por lo que se pueden almacenar dos dígitos: en el LowNibble(bits 0 a 3)
pongo el movimiento 1 y en el HighNibble (bits 4 a 7) pongo el movimiento dos. Esto me permite hacer
diagonales. P.ej: un 2 es derecha, un 13 arriba-izquierda
5-Las animaciones sólo hacen caso al LowNibble del movimiento, ya que no he hecho animaciones para las
diagonales

....por eso, el movimiento diagonal tiene como animación arriba o abajo
6-Con esta organización, los parámetros de entrada de cada subrutina pueden ser: registro X->Dirección
de movimiento, Registro Y->nº de sprite... registro A->queda libre y puedo usarlo como parámetro tb.