lunes, 16 de mayo de 2016

disponible nueva version v22 de 8BP con capacidad de sobreescritura

hola amigos de 8BP

Ya esta disponible en github la nueva version v22 de 8BP con capacidad de sobreescritura, descargable desde https://github.com/jjaranda13/8BP

junto con la librería tenéis una demo que se corresponde con este vídeo


Además también se incluye una nueva versión del editor de sprites que incorpora esta nueva capacidad de diseño de sprites con sobreescritura y el manual de programación actualizado.

Los sprites ahora no solo son capaces de sobreescribirse sobre un fondo que van reponiendo mientras avanzan sino que se pueden ordenar por coordenada Y, de modo que los solapes entre sprites reflejan una profundidad propia de juegos como golden axe o double dragon.
los solapes, ademas de ordenados conservan la forma del sprite, no son rectangulares, tal como puedes ver en esta imagen.

Todo ello ha sido posible sin usar la conocida técnica de "doble buffer", por lo que aun dispones de 27KB para tu programa en BASIC. La libreria completa ocupa sólo 5250 bytes. He recortado el área de memoria para la música de 1.5KB a 1.25 KB, pero nada más.

A diferencia del "doble buffer", la solución adoptada en 8BP está inspirada en el programador Paul Shirley (autor de “misión Genocide”), pero es ligeramente diferente. Contaré directamente la de 8BP:

En el Amstrad un pixel de mode 0 es representado con 4 bits, por lo que son posibles hasta 16 colores diferentes de una paleta de 27.
Pues bien, si usamos un bit para el color de fondo y 3 para los colores de los sprites, tendremos un total de 2 colores de fondo + 7 colores + 1 color para indicar transparencia = 9 colores en total. Esto nos va a permitir “esconder” el color de fondo en el color del sprite, aunque pagamos el precio de reducir el número de colores de 16 a tan solo 9. Además, el fondo solo podrá ser de dos colores. Sin embargo los elementos ornamentales de la pantalla de juego pueden tener mas color, pues los sprites no pasarán por encima, de modo que podemos conseguir cierta dosis de colorido en nuestro juego. Aquí tenemos un ejemplo del resultado que se puede obtener con esta técnica: suelo marrón y cielo azul son los colores del fondo, pero además hay arboles con hojas verdes y un tejado rojo y morado. los elementos ornamentales disponen de 9 colores, y los sprites de 7, es suficiente para dotar la escena de un colorido aceptable como podéis comprobar, y es muy rápido.


hay elementos que se pueden añadir a las escena dotándola de aun más color, como el caldero verde, que en realidad es un sprite.
Para que un sprite tenga sobreescritura simplemente hay que activar su bit 6 en su byte de status

De momento como aperitivo a esta nueva versión es suficiente, Poco a poco os iré contando el funcionamiento de la ordenación de sprites ultrarrápida y las tripas de la impresión con sobreescritura.

Para los programadores más avanzados, os diré que mi próxima mejora de la librería será un scroll supersuave, basado en programación avanzada del chip 6845 que es el controlador de vídeo del Amstrad. Posiblemente os quite 1KB , dejando la memoria disponible para programar en BASIC en 26KB (ahora son 27KB) pero ese será todo el perjuicio.


un saludo y hasta la próxima!




1 comentario: