Ya esta disponible en github la nueva version v23 de 8BP descargable desde https://github.com/jjaranda13/8BP
La librería es totalmente retrocompatible con las versiones anteriores. lo nuevo es:
- mayor velocidad en impresión de sprites ( esto ya lo subí en una versión intermedia, la v2206)
- mejor tratamiento de las interrupciones que permite que la música siempre funcione al mismo ritmo y sea mas fluida.
- versión del juego anunnaki con la librería 8BP v23
- versión del juego Mutante Montoya con la libreria 8BP v23
El tratamiento de las interrupciones es algo delicado cuando pretendemos que una librería nos permita beneficiarnos de ellas, usándola desde el BASIC. Y es que el intérprete BASIC del Amstrad cuando está esperando un comando, o cuando está leyendo una nueva linea de programa para ejecutar, tiene temporalmente las interrupciones desactivadas, lo que provoca problemillas si la librería usa las interrupciones para invocar periódicamente las funciones que permiten que la música suene. En esta nueva versión, aunque haya alguna interrupción perdida debido al intérprete BASIC, el mecanismo es robusto y reajusta el instante en el que debe invocar al player de música, consiguiendo una velocidad constante en su reproducción.
Para ilustrarlo he subido una nueva versión del juego Anunnaki. El programa BASIC es exactamente el mismo, pero con esta versión la música no da "parones" y el resultado es mucho más profesional.
Mission genocide 1987 |
Estoy trabajando para dotar a la librería de un comando de scroll por hardware, y los pocos programadores que han tenido éxito se han basado en una conocida técnica llamada "ruptura de pantalla" o "screen rupture", también la llaman "splitscreen". El caso es que mediante un control preciso de las interrupciones es posible reajustar el número de scanlines de la pantalla a través del controlador de vídeo, el CRTC 6845.
La técnica de ruptura de es un mecanismo ingenioso. hay juegos como el "mission genocide" o el "axys" que lo implementaron muy bien, y en ellos se puede disfrutar de un scroll suave, pixel a pixel, que nada tiene que envidiar a los scroll que podáis encontrar en algunos juegos de commodore 64. Eso si, los programadores se lo curraron mucho para lograr este efecto, mientras que el chip de video del commodore (el VIC -II) hace este tipo de cosas con solo pedírselas.
La técnica de ruptura consiste en controlar exactamente el instante en el que se produce el barrido de pantalla. En ese momento engañamos al CTRC 6845 diciéndole que la pantalla termina antes de lo normal. Eso si, antes de terminar esa sección de la pantalla, le decimos que incorpore menos scanlines de las que corresponden a una sección de ese tamaño. A continuación, y en un instante muy preciso que debemos controlar al microsegundo, le decimos al chip que comience una nueva pantalla, sin haberse producido la señal de sincronismo vertical. Eso nos permite dibujar una segunda zona de pantalla (los marcadores por ejemplo) y compensamos el número de scanlines de la primera sección. Si hacemos bien el mecanismo de compensación de numero de scanlines, podemos hacer que una de las dos secciones de pantalla se mueva con extraordinaria suavidad. El problema de llevar esta técnica a un comando para ser usado desde BASIC es que el control de las interrupciones es impreciso debido a la ejecución del intérprete, y aquí necesitamos un control muy muy preciso.
Axys 1991 |
Pues bien, mientras jugaba con las interrupciones del Amstrad para conseguir un comando de scroll que se pueda usar desde BASIC, me di cuenta de que podía solucionar el problemilla de la musica en 8BP de una forma muy sencilla y por ello he subido la V23
y ahora sigo trabajando en el comando de scroll por hardware, A ver que consigo.
hasta la vista!!!
Me he bajado el repositorio.
ResponderEliminarVoy a empezar a hacer juegos con 8bp ;-)