8BP: Macrosecuencias de animación

Hola amigos de 8 Bits de Poder, en esta entrega semanal del curso 8BP veremos como funcionan las macrosecuencias de animación con la librería. Las macrosecuencias de animación son una característica “avanzada” disponible a partir de la versión V25 de la librería 8BP.

Pero espera… ¿Es posible que no sepas nada de 8 Bits de Poder? Puedes leer el primer artículo del curso de programación en Amstrad CPC de 8BP.
Una “macrosecuencia” es una secuencia formada por secuencias. Cada una de las secuencias de animación constituyentes es la animación que hay que efectuar en una dirección concreta.
La dirección viene determinada por los atributos de velocidad del sprite, que están en la tabla de sprites. De este modo, cuando animemos a un sprite con |ANIMALL, automáticamente cambiará su secuencia de animación sin que tengamos que hacer nada (en realidad no hace falta invocar a |ANIMALL porque |PRINTSPALL ya lo hace internamente si se lo indicamos en un parámetro).
Macrosecuencias de animación con 8BP
Las macrosecuencias se numeran comenzando en la 32. Es muy importante colocar las secuencias dentro de la macrosecuencia en el orden correcto, es decir, la primera secuencia debe ser para cuando el personaje está quieto, la siguiente para cuando va a la izquierda (Vx<0, Vy=0), la siguiente para la derecha (Vx>0, Vy=0), etc, siguiendo el siguiente orden (ten cuidado porque es fácil equivocarse):

Si la secuencia asignada a la posición quieto es cero, entonces simplemente se anima con la última secuencia asignada. Las macrosecuencias hay que especificarlas en el fichero sequences_tujuego.asm, del que a continuación tienes un ejemplo:
org 33500; ;===================================================================== ; secuencias de animacion ;===================================================================== ;--------------secuencias de animacion – ------ _SEQUENCES_LIST dw NAVE,0,0,0,0,0,0,0;1 dw JOE1,JOE2,0,0,0,0,0,0;2 UP JOE dw JOE7,JOE8,0,0,0,0,0,0;3 DW JOE dw JOE3,JOE4,0,0,0,0,0,0;4 R JOE dw JOE5,JOE6,0,0,0,0,0,0;5 L JOE _MACRO_SEQUENCES ;--------MACRO SECUENCIAS – -------------------- ; son grupos de secuencias, una para cada dirección. el significado es: ; still, left, right, up, up-left, up-right, down, down-left, down-right ; se numeran desde 32 en adelante db 0,5,4,2,5,4,3,5,4;la secuencia 32 contiene las secuencias del soldado Joe
Con esa definición de secuencias podemos hacer un sencillo juego que permita mover a “joe” por la pantalla sin controlar su secuencia de animación. Le asignamos la secuencia 32 y alterando la velocidad, el comando |ANIMA (invocado desde dentro de |PRINTSPALL) se encarga de cambiarle la secuencia de animación si su velocidad denota un cambio de dirección.

Eso sí, para mover al sprite necesitamos invocar a |AUTOALL, ya que al pulsar los controles no cambiamos sus coordenadas sino su velocidad y |AUTOALL actualizará las coordenadas del sprite de acuerdo a su velocidad.
10 MEMORY 23999 20 MODE 0:INK 0,12 30 ON BREAK GOSUB 280 40 CALL &6B78 50 DEFINT a-z 111 x=36:y=100 120 |SETUPSP,31,0,&X1111 130 |SETUPSP,31,7,2:|SETUPSP,31,7,32 140 |LOCATESP,31,y,x 160 |SETLIMITS,0,80,0,200 161 |PRINTSPALL,0,1,0 190 'comienza ciclo de juego 199 vy=0:vx=0 200 IF INKEY(27)=0 THEN vx=1: GOTO 220 210 IF INKEY(34)=0 THEN vx=-1 220 IF INKEY(69)=0 THEN vy=2: GOTO 240 230 IF INKEY(67)=0 THEN vy=-2 240 |SETUPSP,31,5,vy,vx 250 |AUTOALL:|PRINTSPALL 270 GOTO 199 280 |MUSICOFF:MODE 1: INK 0,0:PEN 1
Fíjate que no he definido la secuencia para cuando el personaje no se mueve. En dicha posición he puesto un cero en la macrosecuencia. Eso significa que, si el personaje comienza quieto, no se sabe que secuencia asignar pues no hay una “última” secuencia usada. Es por ello que asigno la secuencia 2 antes de asignar la 32, así me aseguro de que el personaje ya tiene una secuencia, aunque se encuentre quieto.
130 |SETUPSP, 31, 7, 2:|SETUPSP, 31, 7, 32
La próxima semana veremos como hacer tu primer juego sencillo con 8 Bits de Poder.
Hasta aquí hemos llegado por hoy con el curso de programación en Amstrad CPC de 8 bits de poder Si tienes alguna duda puedes escribir en comentarios y te contestaré lo antes posible.
Todos los recursos, como manuales, ejemplos y juegos compilados de este curso los puedes encontrar en el repositorio Github de 8BP.
Hasta la semana que viene amigos 😄
Desconocía estas técnicas, gracias 🙂