11Fermer13
deephLe 22/08/2013 à 12:02
Génial ça marche !!! grin
#if defined TL_DELAY char __FASTCALL__ TL_delay(unsigned int delay){ #asm ; delay = ~1 ms (without interrupts and depending of the temperature/battery state !) ; 1 z80 cycle (= 4 T-states) at 6 MHz = ~664 ns ; 1 z80 T-state at 6 MHz = ~166 ns TL_delay: ld b,186 ; 7 T-states (1162 ns) TL_delay_loop: sub a,(ix+0) ; 19 T-states (3154 ns) djnz TL_delay_loop ; 13 T-states (2158 ns) if nz, else 8 T-states (1328 ns) dec hl ; 6 T-states (996 ns) ld a,h ; 4 T-states (664 ns) or a ; 4 T-states (664 ns) jr nz,TL_delay ; 12 T-states (1992 ns) if nz, else 7 T-states (1162 ns) ld a,l ; 4 T-states (664 ns) or a ; 4 T-states (664 ns) jr nz,TL_delay ; 12 T-states (1992 ns) if nz, else 7 T-states (1162 ns) ; ret ; 10 T-states (1660 ns) #endasm } #endif

Si le paramètre delay=0 ou 1 (=hl), la routine prend environs 1162+186(3154+2158)+1328+996+4*64+2*1162+1660=995758 ns soit 0.9 ms et environs 1 ms autrement.

Petit screen pour prouver que ça marche (j'ai comparé avec un chronomètre) :

s50z

Le code :
#pragma string name test #include "..\devtest\ti83p.h" #include "..\devtest\tilib.c" char main(){ unsigned char i; for(i=0; i<10; i++){ C_bcall(_cleargbuf); TL_put_val(0, 0, i); TL_gbuf_to_lcd(); TL_delay(1000); } }

Je vais pouvoir commencer à porter quelques petits jeux avec toutes ces routines smile

D'ailleurs je trouve que certaines ont des noms assez peu explicites, non ? Peut-être vaudrait-il mieux appeler les sprites bitmaps ? Et je n'arrive pas à trouver un meilleur nom à la routine "TL_put_val".

(Purée mon screenshot de la sprite clippée a encore été supprimé sick Je le referais plus tard).