Página 6 de 6

Re: Pintando sprites de 16x16 en ensamblador

Publicado: Mié, 11 Dic 2013, 11:42
por angel
:nath:

Re: Pintando sprites de 16x16 en ensamblador

Publicado: Mié, 11 Dic 2013, 11:42
por na_th_an
Hay un truco. Con la dirección en DE, para moverse hacia abajo un caracter sin importar dónde estemos, se usa este codiguito de Einar Saukas:

$this->bbcode_second_pass_code('', ' ; Move one char down. Routine by einar Saukas.
ld a, e
add a, 32
ld e, a
jr nc, _down_char_continue
ld a, d
add a, 8
ld d, a
._down_char_continue')
Solo comprueba el carry. Si sumando 32 a E te pasas de 256 es que hay un cambio de tercio, por lo que hay que ajustar también D.

Pero de todos modos, es mejor tener la tablita de 24 valores como te dije. Te quitas de todos los problemas.

Re: Pintando sprites de 16x16 en ensamblador

Publicado: Mié, 11 Dic 2013, 12:04
por radastan
Tomo nota, ya lo probaré esta noche. También miraré la opción de la tablita, que 48 bytes tampoco es un gasto voraz y sirve para muchas cosas.

Image

Re: Pintando sprites de 16x16 en ensamblador

Publicado: Mié, 11 Dic 2013, 12:18
por radastan
Pues me ha podido el "ansia" y lo he probado. Efectivamente, había que sumar 8 (curiosamente tenía el mismo código pero yo seguía emperrado en sumar sólo el acarreo).

Ya está cambiado y va de perlas. :cheer:

Esta noche prepararé un test sencillito para ver que tal va en una situación real.

Re: Pintando sprites de 16x16 en ensamblador

Publicado: Mié, 11 Dic 2013, 22:20
por radastan
Bueno este es el ejemplo final de como queda la rutina, con un retardo considerable para que se pueda apreciar el movimiento (sin retardo ves un barrido a toda pastilla arriba y abajo, no da tiempo ni a ver los sprites). Para reducir el efecto parpadeo lo que hago es imprimir en la nueva posición y borrar el rastro que se deja atrás. Vamos, que es un ejemplo real de como puede quedar.

En resumen, es perfectamente posible hacer un juego con las rutinas de sprites que hemos realizado y llenar la pantalla de bichos sin problemas. Es más no estamos limitados a 16x16, se pueden usar sprites de hasta 32x32 (e incluso más grandes) sin problemas de velocidad.

No digo que se pueda hacer un Popeye, pero si alguna cosa en plan Trap Door sin problemas.

Voy a elaborar una rutinilla simple de scroll en baja resolución, que es algo muy práctico y da mucho juego.