Sprites 8x8 al pixel en modo Radastan

Todo sobre la creación, diseño y programación de nuevo software para
nuestro Spectrum

Moderador: Sir Cilve Sinclair

Sprites 8x8 al pixel en modo Radastan

Notapor frjanibo el 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! ;)
frjanibo
rst 0
 
Mensajes: 5
Registrado: Mie Dic 04, 2013 4:29 pm

Re: Sprites 8x8 al pixel en modo Radastan

Notapor radastan el Dom Jun 25, 2017 11:56 pm

Tú mismo te contestas, al no usar posiciones exactas tienes que realizar cálculos y pierdes mucha velocidad.
La única opción es tener los sprites preshifteados, es decir, un sprite spara posiciones pares y otro para impares.

Gastas el doble de memoria en sprites, pero la velocidad la mantienes... y claro... mis rutinas ya sirven para eso. :mrgreen:
_________________________________________
Hay otras páginas.... pero no son Bytemaniacos
http://www.bytemaniacos.com
Orgullo de 8 bits
_________________________________________
Avatar de Usuario
radastan
Phantomas
 
Mensajes: 2117
Registrado: Lun May 07, 2007 5:34 pm


Volver a Programación y nuevos desarrollos

¿Quién está conectado?

Usuarios navegando este Foro: No hay usuarios registrados visitando el Foro y 2 invitados