Sprites 8x8 al pixel en modo Radastan
Publicado: Vie Jun 23, 2017 8:12 pm
Hola chicos, para la próxima zxdev me picaba el gusanillo de hacer algo en el modo Radastan para el ZX Uno. He estado buscando por los foros y lo mejor que llegué a encontrar es el kit que alguien (radastan mismo?) mantiene en el foro de zx-uno. El problema es que las funciones que incorpora para dibujar en pantalla los sprites tienen la limitación de sólo poder dibujar en los pixeles pares de la coordenada X.
Esto es así por la disposición 'especial' del modo Radastan. Es comprensible, pero al tener tan baja resolución horizontal (128px) el que el personaje se mueva de 2 en 2 pixeles se me antojaba un poco brusco. Así que he desempolvado algunos libros de asm que tengo por casa y he empezado una librería para dibujar sprites al pixel en modo Radastan.
He empezado copiando lo que encontré por ahí y le he añadido 2 funciones (en asm, pero embebido en el C de z88dk):
- put_sprite_x8: que recibe un *sprite de 8x8 pixels y lo posiciona en x,y.
- get_sprite_x8: que guarda en un *sprite de 8x8 el contenido de la pantalla desde las coordenadas x, y.
He intentado que vayan lo más rápido posible, pero aunque me he estrujado la media neurona, no termino de estar satisfecho con la velocidad. Soy consciente de que siempre puedo poner el modo turbo de 7mhz, pero antes quería pedir ayuda por aquí, que seguro hay mentes preclaras y veteranas en ASM para iluminar mi camino.
El código y un fichero tap de demostración lo he puesto en github: https://github.com/frjanibo/zumito
PD: en la demo, las teclas son QAOP
Enlace directo al tap: https://github.com/frjanibo/zumito/raw/master/test.tap
Os agradezco de antemano los consejos y fixeos!
Esto es así por la disposición 'especial' del modo Radastan. Es comprensible, pero al tener tan baja resolución horizontal (128px) el que el personaje se mueva de 2 en 2 pixeles se me antojaba un poco brusco. Así que he desempolvado algunos libros de asm que tengo por casa y he empezado una librería para dibujar sprites al pixel en modo Radastan.
He empezado copiando lo que encontré por ahí y le he añadido 2 funciones (en asm, pero embebido en el C de z88dk):
- put_sprite_x8: que recibe un *sprite de 8x8 pixels y lo posiciona en x,y.
- get_sprite_x8: que guarda en un *sprite de 8x8 el contenido de la pantalla desde las coordenadas x, y.
He intentado que vayan lo más rápido posible, pero aunque me he estrujado la media neurona, no termino de estar satisfecho con la velocidad. Soy consciente de que siempre puedo poner el modo turbo de 7mhz, pero antes quería pedir ayuda por aquí, que seguro hay mentes preclaras y veteranas en ASM para iluminar mi camino.
El código y un fichero tap de demostración lo he puesto en github: https://github.com/frjanibo/zumito
PD: en la demo, las teclas son QAOP
Enlace directo al tap: https://github.com/frjanibo/zumito/raw/master/test.tap
Os agradezco de antemano los consejos y fixeos!