RYG: jugadas del ratón – obtención de todas las jugadas válidas

Programación retro del Commodore 64

  • Programación retro del Commodore 64
  • “Programación Retro del Commodore 64” es un blog sobre el hardware, el sistema operativo, y la programación del Commodore 64. Y más específicamente sobre programación en ensamblador. Pretende ser un blog con información de calidad, y referencia en español de la programación retro de esta maravillosa máquina.
    • Mi blog
« Publicado el: 01/05/2020 »

Una vez que ya somos capaces de validar una jugada, el siguiente paso es obtener todas las jugadas válidas del ratón (y sólo las validas). Esto lo conseguimos con la nueva rutina “generaJugadasValidasRaton” del fichero “GenJugadas.asm” que, resumidamente, es una combinación de las rutinas “generaJugadaRaton” y “validaJugada”.

La rutina “generaJugadasValidasRaton” está declarada así:

Rutina generaJugadasValidasRaton - parmas

Es decir, recibe como entrada la posición actual del ratón (fila y columna) y devuelve como salida hasta cuatro posiciones válidas.

El cuerpo de la rutina es así:

Rutina generaJugadasValidasRaton - bucle

Es decir, esencialmente es un bucle desde X=0 hasta X=3, donde para cada valor del registro X:

  • Genera la jugada X-ésima del ratón.
  • Valida la jugada, es decir, verifica que el destino está vacío y dentro del tablero.
  • Si es válida (etiqueta “gjvrValida”), almacena la jugada en la tabla de salida.
  • Si no es válida (etiqueta “gjvrNoValida”), almacena ($ff, $ff) en la tabla de salida.

De este modo, al terminar la rutina, en la tabla de salida tenemos las jugadas válidas (nueva fila y columna) o ($ff, $ff) si una jugada es inválida.

De este modo, podemos volver a modificar el programa principal “RYG.asm”. En vez de generar todas las jugadas del ratón con “generaJugadaRaton”, generamos sólo las válidas con “generaJugadasValidasRaton”, y éstas son las que pintamos:

Programa principal - movs válidos ratón

El resultado es así:

Programa principal - movs válidos ratón2

Ahora ya podemos afirmar que, definitivamente, el C64 sabe mover el ratón. Se puede probar a mover el ratón a otra posición inicial y comprobar que los movimientos generados son correctos.

El siguiente paso será pedirle al usuario qué jugada quiere efectuar.


Código del proyecto: RYG03