help me to make 8BP better

If you like 8BP, your help is welcome. Help me supporting this initiative (from 1€, whatever you want). Donations will be used for materials and 8BP disemination:

domingo, 27 de enero de 2019

Disponible nueva version V36 de la librería 8BP

hola amigos de 8 bits de poder

Ya esta disponible la versión v36 de 8BP,  disponible para descarga en https://github.com/jjaranda13/8BP la cual incorpora las siguientes mejoras:

  • Comando |PRINTSPALL mejorado,  con nuevo parametro de ordenacion
  • Comando |PRINTSPALL con soporte de 4 modos de ordenamiento de sprites
  • Se han optimizado en velocidad un poquito la impresion flipeada y el comando STARS
  • la libreria no ha cambiado de tamaño, ocupa lo mismo

Con las mejoras de ordenamiento de sprites ya podemos hacer fielmente un juego tipo "Golden Axe" o incluso algo que se aproxima a un juego "filmation" ( ya he empezado a hacer uno, pronto lo vereis). Ahora os voy a detallar un poco las mejoras:

Comando |PRINTSPALL mejorado:
Ahora permite un parametro adicional para especificar el primer sprite que se va a ordenar del grupo de sprites ordenados, es decir ahora se usa del siguiente modo:

|PRINTSPALL, ordenini,ordenfin,anima,sync 

Donde ordenini es el primer sprite que se va a ordenar y ordenfin el ultimo. Veamos un ejemplo de uso:
 |PRINTSPALL,0,11,20,anima,sync 
imprimiremos secuencialmente los sprites del 0 al 10, ordenados del 11 al 20 y secuencialmente del 21 al 31



Si el parámetro “ordenini” se omite, se considera el último valor asignado, o bien cero si nunca se ha asignado un valor. Ademas, si vas a modificar alguno de los dos parámetros de ordenamiento, conviene primero ejecutar PRINTSPALL,0,0,0,0 para que primero se reordenen los sprites secuencialmente antes de ordenarlos con una nueva configuración.

Imprimir de forma ordenada es más costoso computacionalmente que imprimir de forma secuencial.  Ordenar todos los sprites lleva unos 2.5 ms pero si ordenas solo 5 te puedes ahorrar 2ms. Quizás tengas muchos sprites y no merezca la pena ordenar algunos, como los disparos o sprites que sabes que no se van a solapar.

Soporte de 4 modos de ordenamiento:
Ahora se permiten 4 modos de ordenamiento de sprites, que se configuran usando PRINTSPALL con un solo parametro. En 8BP ordenacion "parcial" significa que en cada invocacion solo se corrigen 2 sprites desordenados:

PRINTSPALL,0 : ordenacion parcial de sprites basado en Ymin
PRINTSPALL,1 : ordenacion total de sprites basado en Ymin
PRINTSPALL,2 : ordenacion parcial de sprites basado en Ymax
PRINTSPALL,3 : ordenacion total de sprites basado en Ymax

Los ordenamientos que usan Ymax se basan en la coordenada Y mayor de los sprites, es decir, donde se encuentran sus pies en lugar de su cabeza. Si los sprites son del mismo tamaño, un ordenamiento basado en Ymin te puede servir, pero si los sprites tienen diferente altura puede que desees ordenar según donde se encuentren los pies de cada personaje y para ello tendrás que usar el modo de ordenar 2 o el 3.

En el siguiente ejemplo se puede ver el modo de ordenacion 2 funcionando. En este ejemplo no he usado sobreescritura, sino tan solo ordenacion de sprites, pero se pueden usar ambas cosas a la vez sin ningun problema.


Los modos de ordenar con Ymax son mas lentos, aproximadamente 0.128 ms por sprite, de modo que úsalos cuando los necesites realmente

os dejo con un video de demo de la v36




hasta pronto amigos!!!






3 comentarios:

  1. Será cuestión de intentar programar un videojuego para Amstrad, del BASIC no pasé y con esta librería lo veo más fácil.

    ResponderEliminar
    Respuestas
    1. animo $oloretro, estoy seguro de que en poco tiempo conseguirás hacer un juego. Te recomiendo empezar por un juego corto y sencillo que te sirva para tomar contacto y ya después meterte a un proyecto mayor. Cualquier duda, aqui me tienes!

      Eliminar
  2. Muy interesante. Yo hice mis pinitos en su dia. Y echaba de menos cosas como está. Lo hacía todo con print y era lioso para los "sprites". Y muy lento. Probaremos con tu ayuda. Gracias

    ResponderEliminar