domingo, 9 de octubre de 2016

Disponible versión V26 de la librería 8BP

Hola amigos de 8 bits de poder

Ya esta disponible la versión V26 de la librería 8BP. Como novedad mas importante ahora es compatible con WYZtracker 2.0.1.0, el cual funciona mucho mejor (no he detectado ningún bug en el player). La librería 8BP sigue ocupando lo mismo, apenas 6KB. Librería y manual actualizado esta disponible en https://github.com/jjaranda13/8BP


WYZ tracker es el secuenciador de música con el que puedes hacer tus músicas y hacerlas sonar dentro de tus juegos hechos con 8BP. El WYZtracker ha sido creado por el excelente programador Augusto Ruiz https://github.com/AugustoRuiz/WYZTracker



El nuevo player de WYZtracker ocupa algo mas de memoria y he tenido que hacer algunos ajustes en el mapa de memoria de 8BP

Las novedades en la V26 son :

  • El mapa de memoria de 8BP te sigue dejando libres 26KB para BASIC pero ahora la zona de memoria donde se almacena el mapa del mundo y la zona donde se almacena el layout es el mismo área. Ello implica que no se pueden usar ambas cosas a la vez (lo cual tiene mucho sentido porque un juego con scroll usa mapa del mundo y no layout y viceversa)
  • Puesto que en la V25 el área de memoria de las imágenes comenzaba con las secuencias y las rutas, cada vez que creabas una secuencia o una ruta, las imágenes se ensamblaban en otras direcciones y era un rollo consultar las direcciones cuando quieres usar las imágenes en los comandos |SETUPSP,#,9,image_address o bien |SETUPSQ. Por ello he creado una lista llamada IMAGE_LIST que se incluye en el fichero images_tujuego.asm y donde puedes apuntar imágenes que quieras usar desde esos comandos usando números constantes desde 16 hasta 255 y que no cambian aunque las imágenes se re-esamblen en direcciones diferentes. Esto facilita la vida al programador de BASIC
  • Ahora hay una opción nueva en el comando |MOVER. si indicas el sprite 32 (que no existe), entonces puedes definir las direcciones de memoria de las variables BASIC, de modo que en la siguiente invocación sin estos parámetros se usaran dichas variables. Esto aplica tanto a |MOVER como a |MOVERALL. Es decir MOVER,32,@dy,@dx la ventaja de este mecanismo es ahorrar paso de parámetros y así ganar un milisegundo en sprites que muevas con movimiento relativo

Vamos a ver un ejemplo que aparece en la demo juegosimple. Primeramente muestro un fragmento del fichero donde almacenas tus imágenes
IMAGE_LIST
;---------------------------------------------------------------------------------------------
; pondremos aqui una lista de las imagenes que queremos usar sin especificar la direccion de memoria desde basic
; de este modo el comando |SETUPSP,<id>,9,<address> se transforma en |SETUPSP,<id>,9,<numero>
; la ventaja de no usar direcciones de memoria en basic es que si ampliamos los graficos o se reensamblan en 
; direcciones diferentes, el numero que asignemos no cambiara
; NO tienen que tener todas un numero, solo aquellas que vamos a usar con |setupsp, id, 9,<num>
; se empiezan a numerar en 16
; podemos usar hasta 255 imagenes especificadas de este modo 
; no hace falta que la lista tenga 255 elementos. es de longitud variable, incluso puede estar vacia
;----------------------------------------------------------------------------------------------
dw SOLDADO_R0; 16
dw SOLDADO_R1;17
dw SOLDADO_R2;18
dw SOLDADO_L0;19
dw SOLDADO_L1;20
dw SOLDADO_L2;21

; ahora las imagenes
IMAGE0
;------ BEGIN SPRITE --------
SOLDADO_R0
db 6 ; ancho
db 24 ; alto
db 0 , 0 , 0 , 0 , 0 , 0 
db 0 , 0 , 0 , 0 , 0 , 0 
...

A continuación dos formas diferentes de crear secuencias en BASIC

60 |SETUPSQ,9,&839E,&8430,&84C2,&8430,0,0,0,0: REM soldado derecha    
70 |SETUPSQ,10,19,20,21,20,0,0,0,0: REM soldado izq

la segunda forma es mucho mas "clara" y tiene la ventaja de no requerir consultar las direcciones de memoria en las que se han ensamblado las imágenes. Se puede usar también en el comando |SETUPSP para especificar la imagen de un sprite (parámetro 9).

Por último tenemos la mejora en los comandos de movimiento relativo de sprites. 
Hay una forma de usar el comando |MOVER sin especificar ni “dy” ni “dx”. Para ello indicaremos el sprite 32, que no existe, y pondremos como parámetros las direcciones de memoria de las variables que queremos usar para almacenar tanto “dy” como a “dx”.
La dirección de memoria de una variable se obtiene simplemente anteponiendo el símbolo “@”

|MOVER,32,@dy,@dx

A partir de este momento podremos usar

|MOVER, id

Y con ello el sprite “id” se moverá según indiquen las variables dy, dx. Este mecanismo también funciona con |MOVERALL

Si no se especifican parámetros, se usarán las variables especificadas en la invocación de MOVER con sprite 32, es decir:

|MOVER,32,@dy,@dx
|MOVERALL

Es equivalente a |MOVERALL, dy, dx

Este uso “avanzado” del comando evita el paso de parámetros en cada invocación y por lo tanto es más rápido, lo cual es fundamental en nuestros programas BASIC

y de momento esto es todo en la V26. he actualizado el manual en español y poco a poco haré lo mismo con el de inglés.

hasta la vista!







No hay comentarios:

Publicar un comentario en la entrada