# 8BP
8 bits de poder (8BP). For english version read below.

Si te gusta esta iniciativa y quieres apoyarla, tu donativo servira para comprar materiales, divulgar y hacer que 8BP sea cada dia mejor. el enlace para donar (paypal) es:

https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=LE7TT8547SB5Q&item_name=help+me+to+make+8BP+better&currency_code=EUR&source=url


8BP es una potente libreria para AMSTRAD CPC que nos permitira realizar juegos profesionales desde el BASIC, mientras que las operaciones mas intensivas en el uso de CPU son interpretadas y ejecutadas en codigo maquina. La libreria, al cargarla en el amstrad te "amplia" el BASIC con una serie de comandos especificos para hacer juegos. A este set de comandos nuevo se le llama "extensiones del basic" o comandos RSX. El amstrad en su dia ya nacio pensado para que se pudiesen hacer comandos RSX. Los comandos RSX se caracterizan por tener un "|" delante, por ejemplo para imprimir un sprite con la libreria se usa "|PRINTSP", y como veras todos los comandos nuevos tienen ese palito delante.

descargate el ZIP y en el encontraras:

- manual en .pdf y en .docx, tanto en espanol como en ingles (la version ingles es borrador)

- libreria, ya preparada en una estructura de directorios para hacer un juego, de hecho en el directorio de la libreria encontraras un juego simple que te permitira dar los primeros pasos, ademas del SPEDIT, el editor de sprites (que funciona en BASIC en amstrad) para que hagas tus creaciones. La libreria tiene ficheros en ensamblador (.asm) que son los fuentes de la libreria y algunos otros ficheros auxiliares. Para hacer un juego completo necesitas esto pero no te preocupes porque no tendras que aprender ensamblador, tan solo tendras que aprender el significado de la palabra "ensamblar".

- GameExamples: Aqui ire dejando juegos hechos con 8BP. Ya hay varios juegos para aprender y disfrutar con ellos

	- "mutante montoya", en honor al clasico "mutant monty") desarrollado integramente en basic usando la libreria. Con este juego puedes aprender modificandolo. 
	- "Anunnaki": un juego de arcade hecho en BASIC que emplea la tecnica de programacion de logicas masivas
	- "Nibiru" : un juego de arcade hecho en BASIC con scroll horizontal, macrosecuencias, enrutado de sprites, sobreescritura y logicas masivas.
	- "mini-pong": un juego didactico, corto y sencillo de entender
	- "mini-invaders": un juego didactico, corto y sencillo de entender
	- "Fresh fruits & vegetables": un juego de plataformas con scroll
	- "3D racing one" : un juego de carreras de coches pseudo 3D
	- "Space Phantom" : un juego arcade estilo "Space Harrier"
	- "Frogger Eterno" : una versión del clasico "Frogger"
	- "Eridu: the space port": un juego inspirado en el clasico scramble con scroll
	- "Happy Monty": la segunda parte del clasico  mutant monty con 25 nuevos niveles
	- "Blaster Pilot": un juego de naves con scroll multidireccional, estilo "time pilot" o "asteroids"
	- "Zampa Manzana": un juego de arcade. Coge todas las manzanas! by Riper & music by Xeno
	- "dogfight": un juego de arcade con aviones y scroll horizontal. by Ivan Avila

- Demos: Aqui ire dejando pequeñas demos con ejemplos didácticos hechas con  8BP
 
Las mejoras que vaya incorporando seran retrocompatibles por lo que tu juego siempre podras actualizarlo a la ultima version de la libreria. La libreria estara viva y distribuire siempre gratis mejoras y documentacion y juegos. Siempre estara todo a disposicion de todos. Ese es el espiritu. compartir le da sentido a las creaciones


==============================================

If you like 8BP inituative and you want to help me to make 8BP better, you may donate (paypal using this link:

https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=LE7TT8547SB5Q&item_name=help+me+to+make+8BP+better&currency_code=EUR&source=url


8BP is a powerful library for AMSTRAD CPC that will allow us to make professional games from BASIC, while the most intensive operations CPU usage are interpreted and executed in machine code. The library, once is loaded on the Amstrad, extends BASIC with a series of specific commands to games. This new command set is called "extensions of the basic" or RSX commands. Amstrad in his day already thought to be born could do RSX commands. The RSX commands are characterized by a "|" at the initial character, for example to print a sprite with the library is used "|PRINTSP" and as you will see all new commands have that in front stick.

Download the ZIP and you will find:

- Manual .pdf and .docx, both in Spanish and English (the English version is draft)

- Library, and prepared in a directory structure to make a game, in fact in the library directory you will find a simple game that allow you to take the first steps. In addition you will find the SPEDIT, the sprite editor (works in BASIC in amstrad ) for you to make your creations. The library has files in assembler (.asm) which are the sources of the library and some other auxiliary files. To make full game you need this but do not worry because you do not have to learn assembler, you just have to learn only the meaning of the word "assemble".

- GameExamples: Here i will upload games made with 8BP. There are several available games to learn and enjoy with them

	- "Mutante montoya" in honor of the classic "mutant monty") developed entirely in basic using the library. With this game you can learn modifying it.
	- "Anunnaki": an arcade game made in BASIC . it uses "massive logic" technique programmed in BASIC
	- "nibiru": an arcade game with horizontal scroll, macrosequences, sprite routing, overwrite and massive logics
	- "mini-pong": a simple , short game, easy to understand for beginners
	- "mini-invaders": a simple , short game, easy to understand for beginners
	- "Fresh fruits & vegetables": a platform scrolling game
	- "3D racing one" : a pseudo 3D racing cars game
	- "Space Phantom" : an arcade "Space harrier" style
	- "Frogger Eterno": a version of the classic "Frogger"
	- "Eridu: the space port": a game inspired in the classic "scramble"
	- "Happy Monty": the second part of the classic game "mutant monty", with new 25 levels
	- "Blaster Pilot": a spaceship arcade with multidirectional scroll style "time pilot" or "asteroids"
	- "Zampa Manzana": an arcade game. collect all apples! by Riper & music by Xeno 
	- "dogfight": an arcade with airplanes and horizontal scroll. created by Ivan Avila

- Demos: Here i will upload small demos with didactic examples made 8BP

The improvements that are incorporated will be backwards compatible so your game you can always upgrade to the latest version of the library. The library will be alive and always will distribute free upgrades and documentation and games. Everything will always be available to all. That's the spirit. To share creations makes them meaningful 

26/07/2020 ACTUALIZACION V41 (retrocompatible)
==============================================
He actualizado el repositorio los siguientes cambios:
- libreria: se han incorporado algunas actualizaciones en ficheros asm para proporcionar las siguientes funcionalidades:
	- el comando MUSIC ahora interpreta efectos de sonido (canal FX de wyxtracker) que incluya la melodia
	- nuevo flag en el codigo de enrutamiento 254 para resetear opcionalmente el fotograma de la nueva ruta asignada a un sprite (para hacer que pase a frame 0)
	- cambios en direcciones de cada rutina incorporadas al wrapper 8bp.h

- SPEDIT: se incluye spedit v13 , que puede grabar la paleta en disco

- manual:
	- se incluyen las explicaciones de las mejoras
	- se incluye una ampliacion de como usar mas color en el capitulo de sprites
	- aclaracion del comando PRINTSPALL: primero anima y despues imprime
	- actualizacion de las mejoras de SPEDIT v13


- Demos: todas las demos actualizadas a v41

05/07/2020 ACTUALIZACION SPEDIT V12 (retrocompatible)
==============================================
He actualizado el repositorio los siguientes cambios:
- SPEDIT: se incluye spedit v12 , que contiene ligeras mejoras. Advierte de como se debe definir el ancho de un sprite si se define incorrectamente y tambien incluye algunas mejoras esteticas


20/06/2020 ACTUALIZACION V40 (retrocompatible)
==============================================
He actualizado el repositorio los siguientes cambios:
- games: se incluye "dogfight", un juego de arcade con aviones y scroll horizontal. by Ivan Avila , creado con 8BP v39

31/05/2020 ACTUALIZACION V40 (retrocompatible)
==============================================
He actualizado el repositorio los siguientes cambios:
- libreria: ahora se incluye 8bitsdepoder_v40_00.asm con las siguientes mejoras:
	- compatible con C
	- en el subdirectorio "C" se incluye un wrapper de 8bp (8BP.h)
	- en el subdirectorio "C" se incluye un minibasic (minibasic.h)
	- en el subdirectorio "C" se incluye la herramienta de compilacion "compila.bat" que te simplifica el proceso de compilar y crear un .dsk

- manual: he actualizado el manual e incluido un capitulo que te enseña a traducir tu ciclo de juego a C

- Demos: todas las demos se recopilan en un menu y estan hechas con la v40. ahora hay una demo nueva que demuestra ciclo de juego en C

- games: se incluye "Zampa Manzana" creado por Riper y musica de Xeno


20/02/2020 ACTUALIZACION V39 (retrocompatible)
==============================================
He actualizado el repositorio los siguientes cambios
- libreria: ahora se incluye 8bitsdepoder_v39_001.asm con las siguientes mejoras:
	- comando |COLSPALL, id : ahora explora a partir del colisionador id+1. Esto tiene mas sentido que buscar desde el sprite id, ya que este comando se usa para detectar nuevas colisiones a las ya detectadas con COLSPALL, y lo logico es que usemos el id del colisionador detectado, de modo que nos interesa explorar a partir de id+1
	- comando |MUSIC: ahora acepta un nuevo parametro que permite dejar libre el canal C de sonido mientras suena la musica para usarlo en efectos sonoros con comando SOUND de BASIC 
	- comando PRINTSPALL : ahora primero imprime y luego anima, de modo que el primer fotograma de una explosion se imprimira. Hasta ahora cuando se asignaba una secuencia de animacion, el primer fotograma no se imprimia porque primero animaba y luego imprimia
	- ahora los comandos PRINTSP y PRINTSPALL pueden usar imagenes ubicadas en cualquier zona de memoria, incluso fuera del espacio destinado por la libreria 8BP para sprites. Esto antiguamente funcionaba pero desde que introduje las imágenes flipeadas, un pequeño error hizo que esta posibilidad quedase anulada, pero ya funciona de nuevo.
	- corregido un minibug detectado en un caso concreto de sobreescritura
	

- manual: he actualizado el manual reflejando los cambios en la libreria 

- Demos: todas las demos se recopilan en un menu y estan hechas con la v39. ahora hay una demo nueva para probar musica y FX a la vez



12/11/2019 ACTUALIZACION V38 (retrocompatible)
==============================================
He actualizado el repositorio los siguientes cambios
- libreria: ahora se incluye 8bitsdepoder_v38_001.asm con las siguientes mejoras:
	- comando |COLSPALL mas potente. sin limitaciones de colision con sprites ubicados en coordenadas negativas
	- comando |MUSIC: ahora acepta un nuevo parametro que permite elegir entre hacer sonar la musica en bucle o una sola vez. 
	- comando |MUSICOFF: ya no existe, ha sido reemplazado por una invocacion a MUSIC sin parametros
	

- manual: he actualizado el manual reflejando los cambios en la libreria y he incluido un capitulo de primeos paos al principio

- Demos: todas las demos se recopilan en un menu y estan hechas con la v38

- games: se incluye el juego "happy monty"




08/10/2019 ACTUALIZACION V37_03 (retrocompatible)  
==============================================
He actualizado el repositorio con el siguiente cambio
- libreria: ahora se incluye 8bitsdepoder_v37_003.asm con las siguientes mejoras:
	- comando |COLSPALL mas potente. ahora ademas puede ser invocado con un parametro para especificar el colisionador inicial
	- comando |ANIMALL ya solo se puede invocar mediante un parametro en PRINTSPALL o mediante CALL pues se ha sacado de la lista para ganar algunos bytes de memoria. El comando normalmente solo se usa desde PRINTSPALL, de modo que no supone ningun problema

- manual: he actualizado el manual reflejando los cambios en la libreria y he incluido un apendice con la correspondencia entre cada comando y su equivalente CALL

05/10/2019 ACTUALIZACION V37_01 (retrocompatible)  
==============================================
He actualizado el repositorio con el siguiente cambio
- libreria: ahora se incluye 8bitsdepoder_v37_001.asm con las siguientes mejoras:
	- comando |COLAY mas rapido y con un cambio en su paso de paramtros. ahora acepta 3,2,1 o ningun parametro y el orden de los parametros es  |COLAY umbral,@col,sp . En caso de no usarse ningun parametro, el comando tiene memoria y usa los de la ultima vez
	- se han acelerado un poco unos cuantos comandos, (MOVER, MOVERALL y otros)

- manual: he hecho una revisión completa y lo he actualizado con los cambios en la libreria. He mejorado especialmente el capitulo de logicas masivas

14/06/2019 ACTUALIZACION V36_08 (retrocompatible)  
==============================================
He actualizado el repositorio con el siguiente cambio
- libreria: ahora se incluye 8bitsdepoder_v36_008.asm con las siguientes mejoras:
	- aceleracion de los comandos ROUTESP, SETUPSP,LOCATESP,PRINTSP, PRINTSPALL, ANIMASP,AUTOSP,COLAY COLSPALL

- manual: no lo he actualizado porque no hay ningun cambio en la funcionalidad, simplementa ahora 8BP va mas rapido. Pronto actualizare el manual para incluir nuevas recomendaciones de programacion y algunas de las mediciones de tiempo de ejecucion (en milisegundos) de los comandos tras esta actualizacion


08/05/2019 ACTUALIZACION V36_07 (retrocompatible)  
==============================================
He actualizado el repositorio con el siguiente cambio
- libreria: ahora se incluye 8bitsdepoder_v36_007.asm con las siguientes mejoras:
	- comando UMAP: corregido un bug


17/02/2019 ACTUALIZACION V36_01 (retrocompatible)  
==============================================
He actualizado el repositorio con los siguientes cambios (coherentes entre la documentacion y la libreria). 
- libreria: ahora se incluye 8bitsdepoder_v36_006.asm con las siguientes mejoras:
	- colision de sprites: ahora es mas precisa, y funciona tal como se describe en el manual. Antes se toleraba 1byte de ancho y una linea de alto mas de lo que decia el manual

-manual
	- ahora hay un apendice extra con algunos efectos de sonido
	- incluida rutina de firmware en apendice (call &bb18 que espera a pulsar tecla)
	- explicacion de que una ruta puede medir como mucho 255 bytes y como hacerlas mas largas
	- incluido un apartado de como programar rutas que tienen un patron de repeticion complejo
	- explicacion de como se recorren los colliders frente a como se recorren los collided y ejemplo de solucion de solape multiple
	
	
	


27/01/2019 ACTUALIZACION V36 (retrocompatible)  
==============================================
He actualizado el repositorio con los siguientes cambios (coherentes entre la documentacion y la libreria). 
- libreria: ahora se incluye 8bitsdepoder_v36.asm con las siguientes 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, spriteini,spritefin,anima,sync
		donde spriteini es el primer sprite que se va a ordenar y spritefin el ultimo. esto permite por ejemplo si usamos PRINTSPALL,0,11,20,anima,sync imprimir secuencialmente los sprites del 0 al 10, ordenados del 11 al 20 y secuencialmente del 21 al 31
	- 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
	
	- se han optimizado en velocidad un poquito la impresion flipeada y el comando STARS
	- no ha cambiado el espacio ocupado por la libreria
		
- manual : En la documentacion he reflejado todos los cambios 
	- explicados los 4 modos de ordenamiento y el nuevo parametro de PRINTSPALL para el sprite inicial ordenado
	- aclaraciones sobre donde se almacena el stack pointer en la memoria del amstrad
	- aclaraciones sobre el uso de codigos de escape en rutas
	- aclaraciones sobre como medir tiempos de ejecucion
	- aclaraciones sobre los items en un mapa del mundo


13/12/2018 ACTUALIZACION V35.01 (retrocompatible)  
==============================================
he corregido un bug que afectaba a la impresion transparente en mode 1 cuando se usaba el color 1, que es para respetar el fondo y asi hacer limites redondeados de sprites. En mode 0 funcionaba pero en mode 1 habia un problema. Ya esta corregido

06/12/2018 ACTUALIZACION V35 (retrocompatible)  
==============================================
He actualizado el repositorio con los siguientes cambios (coherentes entre la documentacion y la libreria). 
- libreria: ahora se incluye 8bitsdepoder_v35.asm con las siguientes mejoras:
	- comando |ROUTESP mejorado, ahora permite adelantar varios pasos en la ruta para colocar facilmente naves en hilera
	- he incluido una nueva demo para demostrar ROUTESP
	- corregido un bug detectado en v34 en el uso combinado del codigo 251 y |AUTOALL,1
	- no ha cambiado el espacio ocupado por la libreria
		
- manual : En la documentacion he reflejado todos los cambios y he mejorado apendice de teclado, asi como el apartado de logicas masivas

- JUEGOS: 
	- nuevo juego "SPACE PHANTOM" disponible en la carpeta GameExamples. Es un juego pseudo 3D creado con 8BP V35, ocupa unos 18KB de BASIC


10/10/2018 ACTUALIZACION V34 (retrocompatible)  
==============================================
He actualizado el repositorio con los siguientes cambios (coherentes entre la documentacion y la libreria). 
- libreria: ahora se incluye 8bitsdepoder_v34.asm con las siguientes mejoras:
	- corregido un bug detectado en v33 en la deteccion de colisiones
	- el comando PRINTAT ahora puede imprimir fuera de los limites establecidos por SETLIMITS y es algo mas rapido
	- soporte de impresion transparente y flipeada en mode 1
	- nuevo codigo de ruta 251 para forzar animacion en mitad de una ruta
	- la libreria ahora ocupa 8200 bytes de los que unos 180 estan libres. comienza en la direccion 24000 dejando 24kB libres para BASIC

- SPEDIT: (editor de sprites):  
	- nueva version v11 con soporte de mode 1, con capacidad de flip tambien para este modo
	
	
- manual : En la documentacion he reflejado todos los cambios y he corregido la distribucion de bits en mode 1 en el capitulo de video


31/07/2018 ACTUALIZACION V33 (retrocompatible)  
==============================================
he actualizado el repositorio con una mejora para el comando MAP2SP. Si por algun casual encuentra mas de 32 items para traducir a sprites, tan solo creará 32 sprites y no mas, pues la tabla de sprites no soporta mas. Hasta ahora si ocurria esa circunstancia el comando MAP2SP corrompia la memoria de la libreria. No era un bug, pero ahora el uso de MAP2SP es mas seguro.
He indicado esta circunstancia en el manual tambien.


15/07/2018 ACTUALIZACION V33 (correccion retrocompatible)  
==============================================
he actualizado el repositorio con una correccion de la libreria. Se trataba de un bug que afectaba al comando PRINTAT si justo antes se habia impreso un sprite flipeado. En ese caso, las cadena de texto de PRINTAT se imprimia tambien flipeada. Este bug ya esta corregido. No hay ningun otro bug detectado.

24/06/2018 ACTUALIZACION V33 (retrocompatible)  
==============================================
He actualizado el repositorio con los siguientes cambios (coherentes entre la documentacion y la libreria). 
el manual ha sido mejorado notablemente, con mas aclaraciones y correccion de muchisimos detalles. He incluido mas medidas de rendimiento, mejor explicacion de los mecanismos de scroll, mejor capitulo de memoria de video, mas diagramas explicativos, codigo fuente con colores y tipo de letra monoespaciado, etc.

- libreria: ahora se incluye 8bitsdepoder_v33.asm con las siguientes mejoras:
	- ocupa lo mismo que la v32 (7700 bytes)
	- ahora tienes 1400 bytes para musica (100 bytes mas que con v32)
	- el comando RSX SETUPSQ ha sido eliminado. Este comando tenia una sintaxis mas compleja en BASIC que en asm y he preferido dejar la creacion de secuencias unicamente en el fichero asm. Ademas en ninguno de mis juegos lo habia usado. Era el comando menos util. gracias a ello he ganado espacio de memoria para mejoras de funcionalidad y para graficos, pues antes este comando reservaba 256bytes en la zona de memoria de graficos pra poder funcionar.
	
	- En modo pseudo-3D, ahora tiene capacidad de imprimir segmentos con sobreescritura. Esto es algo que se podia hacer en v32 con todo tipo de sprites menos con los segmentos. Ahora simplemente al configurar los items con sobreescritura (usando MAP2SP, status) los segmentos tendran sobreescritura
	
	- Rotación de tintas (comando RINK) sin limitaciones. Hasta ahora se podian hacer patrones de 4 y 8 tintas rotando. Ahora puedes rotar cualquier numero de tintas
	
	- Sobreescritura de sprites con posibilidad de elegir el numero de bits de fondo: esto te va a permitir si lo deseas usar 4 colores de fondo en tus juegos
	
	- sprite flipping horizontal: ahora puedes definir imágenes "virtuales", que en realidad se definen como el "flip" horizontal de una imagen real. Esto te permite ahorrar mucha memoria RAM destinada a graficos. He hecho el horizontal y no el vertical porque el horizontal es el más util. Normalmente un personaje que camina a la izquierda es la imagen especular del mismo caminando hacia la derecha, mientras que cuando sube hacia arriba muestra la espalda y al bajar muestra el pecho y la cara. 



15/04/2018 ACTUALIZACION V32 (retrocompatible)  
==============================================
He actualizado el repositorio con los siguientes cambios (coherentes entre la documentacion y la libreria). 
- libreria: ahora se incluye 8bitsdepoder_v32.asm con las siguientes mejoras 
	- capacidad pseudo 3D: 
		- explicacion detallada del funcionamiento pseudo3D y de las matematicas asociadas
		- nuevo comando "3D" que permite prooyectar en 3D al imprimir con PRINTSP y PRINTSPALL
		- soporta imagenes de tipo zoom para juegos 3D
		- soporta imagenes de tipo segmento para juegos 3D
	- nuevo comando ROUTESP que enruta un unico sprite
	- mejora del comando PRINTAT, mas velocidad y mejora para que imprima el ultimo caracter en caso de error
	- mejora del comando MAP2SP para que el estado de los sprites generados sea configurable
	- mas memoria para la musica: ahora dispones de 1300 bytes
	- mejora de PRINTSPALL : ahora puedes forzar ordenacion completa o parcial de sprites
	
- SPEDIT (editor de sprites):  
	- nueva version v10, aunque no posee mejoras. He hecho cambios menores
	
- JUEGOS: 
	-nuevo juego "3D racing one" disponible en la carpeta GameExamples. Es el primer juego que usa la capacidad 3D de la version32 de 8BP. ocupa casi 20KB de BASIC


30/08/2017 ACTUALIZACION V31 (retrocompatible)  
==============================================
He actualizado el repositorio con los siguientes cambios (coherentes entre la documentacion y la libreria). 
- libreria: ahora se incluye 8bitsdepoder_v31.asm con las siguientes mejoras 
	- nuevo comando PRINTAT, capaz de imprimir cadenas de caracteres pequenas, adecuadas para juegos en mode 0 y con la posibilidad de definir tu propio juego de minicaracteres

- demos : 
	- encontraras demos del nuevo comando PRINTAT en la carpeta de demos, directorio DemoExamples/minicaracteres. 


13/04/2017 ACTUALIZACION V30 (retrocompatible)  
==============================================
He actualizado el repositorio con los siguientes cambios (coherentes entre la documentacion y la libreria). 
- libreria: ahora se incluye 8bitsdepoder_v30.asm con las siguientes mejoras 
	- mejora del sincronismo de pantalla en el comando |PRINTSPALL. funcionalmente no cambia nada


09/03/2017 ACTUALIZACION V29 (retrocompatible)  
==============================================
He actualizado el repositorio con los siguientes cambios (coherentes entre la documentacion y la libreria). 
- libreria: ahora se incluye 8bitsdepoder_v29.asm con las siguientes mejoras 
	- se permite definir un cambio de ruta dentro de una ruta. Por ejemplo, ahora un sprite puede recorrer la ruta 5 y al final de la misma empezar a recorrer la ruta 2. Para ello usaremos el codigo de escape 252
		- 255: cambio de estado en mitad de ruta
		- 254: cambio de secuencia de animacion en mitad de ruta
		- 253: cambio de imagen en mitad de ruta
		- 252: cambio de ruta (al final de ruta, logicamente)

Como ya habia consumido 6KB y no queria consumir mas, he modificado algunas funciones y ubicacion de datos para lograr mas espacio y asi incluir esta nueva funcionalidad sin consumo extra de memoria.

En la documentacion he reflejado esta nueva funcionalidad
	


13/02/2017 ACTUALIZACION V28b (retrocompatible)  
==============================================
He actualizado el repositorio con los siguientes cambios (coherentes entre la documentacion y la libreria). 
- libreria: ahora se incluye 8bitsdepoder_v28b.asm con las siguientes mejoras 
	- La colision de sprites funciona mejor. Habia un bug en el caso de que un sprite estuviese parcialmente fuera de la pantalla, ya que en ese caso no se detectaba colision. Con esta version queda solucionado



31/01/2017 ACTUALIZACION V28 (retrocompatible)  
==============================================
He actualizado el repositorio con los siguientes cambios (coherentes entre la documentacion y la libreria). 
- libreria: ahora se incluye 8bitsdepoder_v28.asm con las siguientes mejoras 
	- se permite cambio de secuencia de animacion en mitad de una ruta (usando un segmento que comience  con valor 254)
	- se permite cambio de imagen en mitad de una ruta (usando un segmento que comience  con valor 253)

Esta mejora funcional permite programar de un modo mas sencillo cosas tales como sprites que dan saltos, sprites que durante una trayectoria se transforman en otra cosa y se hacen vulnerables, etc

En la documentacion se ha reflejado esta nueva funcionalidad


30/12/2016 ACTUALIZACION V27b (retrocompatible)  
==============================================
He actualizado el repositorio con los siguientes cambios (coherentes entre la documentacion y la libreria). 
- libreria: ahora se incluye 8bitsdepoder_v27b.asm con las siguientes mejoras 
	- el comando |PRINTSP,#,y,x actualiza las coordenadas del sprite en la tabla. Ademas, ahora también puede invocarse sin coordenadas y se imprime en las que posea en la tabla de sprites

En la documentacion, además de reflejar este cambio, se han incluido descripciones de los minijuegos "mini-pong" y "mini-invaders"


19/12/2016 ACTUALIZACION V27 (retrocompatible)  
==============================================
He actualizado el repositorio con los siguientes cambios (coherentes entre la documentacion y la libreria). 

- libreria: ahora se incluye 8bitsdepoder_v27.asm con las siguientes mejoras 
	- ahora las rutas pueden contener cambios de estado en un sprite. muy util para disparos, ya que simplifica la logica. Este mecanismo tambien sirve para que tu personaje de saltitos muy eficientemente
	- nuevo comando |RINK capaz de hacer animacion por tintas, un complemento para juegos de scroll. encontraras demos en la carpeta de demos, directorio DemoExamples/scroll_rink

- demos : 
	- encontraras demos del nuevo comando RINK en la carpeta de demos, directorio DemoExamples/scroll_rink. verás un juego de coches de carreras y otro de un muñeco que avanza en un escenario con ladrillos, un castillo, un arbol y un pajaro que vuela
	- en el ejemplo que viene con la libreria V27 encontraras varias versiones del juego sencillo, uno donde solo se mueve izquierda derecha, en otra salta sin ruta, en otra salta usando una ruta, en otra dispara 




30/10/2016 NUEVO JUEGO NIBIRU y version 09 de SPEDIT 
==============================================
He actualizado el repositorio con los siguientes cambios 


- SPEDIT (editor de sprites): 
	-he subido la version 09 que incorpora 4 paletas a elegir y el buffer de imagen lo he movido a la direccion 24000. 

- Juegos
	- he anadido el nuevo juego "nibiru", un arcade de scroll horizontal. pronto actualizare la documentacion explicando algo sobre su diseno. Es un juego de 15KB (sin contar graficos ni musica) escrito en BASIC, logicamente
	

17/10/2016 ACTUALIZACION V26b (retrocompatible) 
==============================================
He actualizado el repositorio con los siguientes cambios (coherentes entre la documentacion y la libreria). 

- libreria: ahora se incluye 8bitsdepoder_v26b.asm con las siguientes mejoras 
  	- 8BP ahora es mas rapida ya que he reordenado los comandos RSX para ubicar los mas frecuentes en las primeras posiciones de la lista de comandos que maneja internamente el AMSTRAD. De este modo los comandos mas frecuentes ahora tardan un pelin menos en ejecutarse y los menos frecuentes tardan mas. El rendimiento global de los juegos ahora es mayor. 

- Juegos
	- he reensamblado los juegos (los juegos estan en BASIC, realmente he reensamblado su libreria y sus graficos y su musica) con la nueva version de la libreria y ahora son mas rapidos. El incremento de velocidad no es muy grande pero es apreciable
	
	
	

09/10/2016 ACTUALIZACION V26 (retrocompatible) 
==============================================
He actualizado el repositorio con los siguientes cambios (coherentes entre la documentacion y la libreria). 

- libreria: ahora se incluye 8bitsdepoder_v26.asm con las siguientes mejoras 
  	- 8BP ahora es compatible con WYZtracker 2.0.1.0: esta version del secuenciador de musica (creado por Augusto Ruiz, un excelente programador) es perfecta y no tiene ningun bug, aunque ocupa algo mas de memoria, por lo que he hecho algunos ajustes en el mapa de memoria de 8BP
  	- 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 area. 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 area de memoria de las imagenes comenzaba con las secuencias y las rutas, cada vez que creabas una secuencia o una ruta, las imagenes se ensamblaban en otras direcciones y era un rollo consultar las direcciones cuando quieres usar las imagenes 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 imagenes que quieras usar desde esos comandos usando numeros constantes desde 16 hasta 255 y que no cambian aunque las imagenes se reesamblen en direcciones diferentes. Esto facilita la vida al programador de BASIC 
	- ahora hay una opcion 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 invocacion sin estos parametros 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 parametros y asi ganar un milisegundo en sprites que muevas con movimiento relativo

- demos:
	- he recompilado juegosimple con la libreria V26

- TOOLS: he incluido la version del WYZtracker (la 2.0.1.0) que es compatible con 8BP en el directorio raiz. La web de augusto ruiz es https://github.com/AugustoRuiz/WYZTracker

25/09/2016 ACTUALIZACION V25 (retrocompatible) 
==============================================
He actualizado el repositorio con un pequeno cambio (coherentes entre la documentacion y la libreria).  Al ser un cambio pequeño no he modificado el nombre de version de la libreria ni de la documentación, aunque lo he incorporado en ambos. En la documentacion ademas he añadido un par de apendices utiles nuevos (de una pagina cada uno)

- libreria: ahora se incluye 8bitsdepoder_v25.asm con la siguiente mejora
  	- nuevo parámetro opcional en |AUTOALL, de modo que AUTOALL,1 invoca internamente a ROUTEALL antes de mover el sprite, ahorrándote una invocación desde BASIC que siempre va a suponer un precioso milisegundo.


23/09/2016 ACTUALIZACION V25 (retrocompatible) 
==============================================
He actualizado el repositorio con los siguientes cambios (coherentes entre la documentacion y la libreria). 

- libreria: ahora se incluye 8bitsdepoder_v25.asm con las siguientes mejoras 
  	- macrosecuencias de animacion: permiten que un sprite cambie de secuencia de animacion de un modo automatico en funcion de su direccion
  	- nuevo comando ROUTEALL capaz de enrutar a los sprites por trayectorias definidas por usuario

- demos:
	- se incluyen una serie de demos en el dsk de la V25, asi como una demo de scroll horizontal en el directorio de demos

22/09/2016 ACTUALIZACION de SPEDIT V08
==============================================
He actualizado el repositorio con una version de spedit que corrige un pequeno bug, solo detectable si ejecutabas dos veces seguidas un flip vertical. 

13/09/2016 ACTUALIZACION V24 (retrocompatible) 
==============================================
He actualizado el repositorio con el siguiente cambio:

- libreria: corregido un pequeno bug que he detectado en el comando |STARS y ahora no solo funciona correctamente sino que ademas es mas rapido. No he cambiado de nombre el fichero .asm , simplemente lo he corregido. Por coherencia he reensamblado y regenerado los .dsk de ejemplo de la V24 y de la demo de minicomando

10/09/2016 ACTUALIZACION V24 (retrocompatible) 
==============================================
He actualizado el repositorio con los siguientes cambios (coherentes entre la documentacion y la libreria). 

- libreria: ahora se incluye 8bitsdepoder_v24.asm con las siguientes mejoras 
  	- scroll multidireccional basado en el nuevo comando |MAP2SP capaz de trasladar un mapa del mundo a sprites activos.
  	- fichero map_table.asm donde se describe la lista de elementos graficos que componen el mundo, ubicados en coordenadas que van desde 0 hasta 32000 tanto en x como en y
  	- la libreria ahora ocupa desde la direccion 26000, dejando 26 KB al programador BASIC, frente a los 27KB anteriores

- demos:
	- se incluye un minijuego tipo commando para demostrar el mecanismo de scroll


14/07/2016 ACTUALIZACION V23b (retrocompatible) 
==============================================
He actualizado el repositorio con los siguientes cambios (coherentes entre la documentacion y la libreria). 

- libreria: ahora se incluye 8bitsdepoder_v23b.asm con las siguientes mejoras 
  	- comando |COLAY permite definir un umbral ASCII de colision, de modo que podemos usar elementos que tengan asociada una letra en el layout que sea considerada como el espacio en blanco de cara a considerar colision. muy util en sobreescritura
  	
- nuevo directorio de demos:
	- he añadido un directorio con demos hechas con 8BP, como un repositorio de ejemplos sencillos y didácticos que ire ampliando



07/06/2016 ACTUALIZACION V23 (retrocompatible) 
==============================================
He actualizado el repositorio con los siguientes cambios (coherentes entre la documentacion y la libreria). La documentacion no ha sido actualizada porque los cambios no afectan a la documentacion.

- libreria: ahora se incluye 8bitsdepoder_v23.asm con las siguientes mejoras 
  	- gestion de interrupciones mejorada: ahora la musica funciona mejor, mas fluida, siempre a la misma velocidad
- juegos:
	- he añadido una version del anunnaki en la que uso la version v23. El programa BASIC es el mismo, pero con esta version de la libreria, el juego funciona mejor. los sprites se imprimen algo mas deprisa y la musica suena con fluidez y sin que pueda relentizarse en ningun momento




26/05/2016 ACTUALIZACION V22.06 (retrocompatible) 
==============================================
He actualizado el repositorio con los siguientes cambios (coherentes entre la documentacion y la libreria).

- libreria: ahora se incluye 8bitsdepoder_v2206.asm con las siguientes mejoras 
  	- impresion de sprites normales y transparentes más rapida (en un soldado de 12x24 ahora es 0.5 ms mas rápida)
  	
	
19/05/2016 ACTUALIZACION V22b (retrocompatible) 
==============================================
He actualizado el repositorio con los siguientes cambios (coherentes entre la documentacion y la libreria).

- libreria: 
  - ahora se incluye 8bitsdepoder_v2204.asm con las siguientes mejoras 
  	- la impresion ordenada de sprites es mas rapida (0.4ms mas rapida)
  	- el parametro de ordenacion ahora permite ordenar la lista de sprites parcialmente, de modo que puedes imprimir un subconjunto de sprites ordenado y otro de forma secuencial.
 
- manual v22 actualizado, indicando los
	- impresion ordenada de sprites parcial, configurable con un parametro en PRINTSPALL
	- algunos tiempos de ejecucion, comparando impresion ordenada con secuencial e impresion con/sin sobreescritura 


16/05/2016 ACTUALIZACION V22 (retrocompatible) 
==============================================
He actualizado el repositorio con los siguientes cambios (coherentes entre la documentacion y la libreria).

- libreria: 
  - ahora se incluye 8bitsdepoder_v22.asm con las siguientes mejoras 
   	- flag de sobreescritura en sprites, capacidad para imprimirse sobre un fondo reestableciendolo
   	- colisiones entre sprites ahora pueden tener la forma del sprite y no una forma rectangular
   	- los sprites se pueden imprimir ordenados por coordenada "Y", gracias a un nuevo parámetro en |PRINTSPALL. Ello permite solapes de sprites ordenados
  - herramienta SPEDIT v6: ahora puedes dibujar sprites con capacidad de sobreescritura
  
- documentacion: disponible el manual v22, que incluye:
	- seccion de sprites con sobreescritura
	- sección de ordenamiento de sprites
  	- comando |PRINTSPALL con nuevo parámetro
  	- mas información sobre la memoria de video y los barridos de pantalla
  	


23/03/2016 ACTUALIZACION V21 (retrocompatible) 
==============================================
He actualizado el repositorio con los siguientes cambios (coherentes entre la documentacion y la libreria).

- libreria: 
  - ahora se incluye 8bitsdepoder_v21.asm con las siguientes mejoras 
   	- SETUPSP,5,Vy,Vx: con un solo comando ahora actualizamos la Vy y la Vx, ahorrando casi 3 milisegundos
   	- STARS: comando mejorado, ahora realiza mejor el calculo cuando una estrella se sale por un limite y debe entrar por el lado
  - herramienta SPEDIT v5: ahora puedes "espejar" tu sprites sobre un eje central imaginario, una ayuda para dibujar sprites simetricos
  
- documentacion: disponible el manual v21, que incluye:
	- SETUPSP,5,Vy,Vx: con un solo comando ahora actualizamos la Vy y la Vx, ahorrando casi 3 milisegundos
	- STARS: comando mejorado, ahora realiza mejor el calculo cuando una estrella se sale por un limite y debe entrar por el lado opuesto
  	- explicacion mas detallada de la tecnica de logicas masivas
  	- nuevos consejos  de programacion
  	- codigo del videojuego anunnaki
  	- nuevos consejos sobre como editar musica para no tener problemas
  	




08/03/2016 ACTUALIZACION v20 (retrocompatible) 
==============================================

He actualizado el repositorio con los siguientes cambios (coherentes entre la documentacion y la libreria).

- libreria: 
  - ahora se incluye 8bitsdepoder_v20.asm con las siguientes mejoras 
  	- COLSP : ahora puedes definir la sensibilidad de la collision (grado de solape entre sprites)
  	- nuevo comando COLSPALL que permite acelerar la detección de colisiones entre sprites y simplifica el BASIC necesario
  	- nuevo bit de "colisionador" en el byte de status
  
- documentacion: disponible el manual v20, que incluye:
	- COLSP : ahora puedes definir la sensibilidad de la collision (grado de solape entre sprites)
  	- nuevo comando COLSPALL que permite acelerar la detección de colisiones entre sprites y simplifica el BASIC necesario
  	- nuevo bit de "colisionador" en el byte de status

con estas mejoras los juegos arcade ahora funcionan aun más rapido. Se incluye la demo de annunaki donde podeis comprobar el uso de estas mejoras
  
  

02/03/2016 ACTUALIZACION v19 (retrocompatible) 
==============================================

He actualizado el repositorio con los siguientes cambios (coherentes entre la documentacion y la libreria).

- libreria: 
  - ahora se incluye 8bitsdepoder_v19.asm con mejoras en COLSP y soporte de "secuencias de muerte"
  - los directorios aparecen mejor organizados, de acuerdo a la recomendacion que se hace en el manual de 8BP 

- documentacion: disponible el manual v19, que incluye:
  - nuevo uso del comando COLSP, especificando el sprite 33 se puede acelerar reutilizando la variable de retorno
  - soporte de secuencias de animacion "de muerte". Se trata de una secuencia de animacion, que tras recorrerla, un sprite queda desactivado
  - recomendacion sobre directorios en los que almacenar los ficheros de tu proyecto
 

28/02/2016 ACTUALIZACION v18 (retrocompatible) 
==============================================

He actualizado el repositorio con los siguientes cambios (coherentes entre la documentacion y la libreria).

- libreria: ahora se incluye 8bitsdepoder_v18.asm con mejoras en COLSP y aumento de velocidad en STARS, mediante una optimizaciÃ³n de cÃ¡lculos

- documentacion: disponible el manual v18, que incluye:
  - explicacion adicional de la diferencia entre 8BP y un motor de juegos
  - nuevo uso del comando COLSP, especificando el sprite 32 se puede acelerar
  - explicaciones adicionales sobre el uso del flag de colision en tu personaje y disparos
  - nuevos ejemplos en la tabla de velocidad de los comandos BASIC

 

22/02/2016 ACTUALIZACION v17 (retrocompatible) 
==============================================

He actualizado el repositorio con los siguientes cambios (coherentes entre la documentacion y la libreria).

- libreria: ahora se incluye 8bitsdepoder_v17.asm con mejoras en dos comandos (STARS y PRINTSPALL)

- documentacion: disponible el manual v17, que incluye:

  - explicacion adicional del comando MUSIC, por clarificar mas su funcionamiento 
  - algun detalle mas en la explicacion de como hacer una cinta y un disco
  - nuevo comportamiento de PRINTSPALL, en la guia de referencia. compatible con el uso anterior
    ahora es capaz de imprimir en 0.7 ms menos de tiempo. no es una gran mejora pero todo suma.
  - nuevo comportamiento de STARS, con unificacion de los dos bancos de estrellas en uno solo, de modo que ahora puede haber 
    muchos planos de estrellas. compatible con el uso anterior, aunque ahora el significado del primer parametro ha cambiado

