;rockyone pour MI-3 ; ; ; CYCLE COULEURS : ART DIRECTOR : ART ( basse r‚solution ) ; ------------------------------------------------------------ ; ;Anime buffer 512 octets ; +0 8 palette 16 words colors ; +256 8 octets 1 octet par palette valeur 0 … 9 nombre de vbl pour chaque palette ; 0 = pal not display ; ; +287 1 byte numero de la palette de l'image 0 … 8 ; ; +288 a +512 inutilis‚ ; ; call Art_cycle( L Anime) ; ; ;------------------------------------------------------------------------ movem.l d0-d7/a0-a6,-(a7) move.l 64(sp),a5 lea.l 256(a5),a6 ; Adresse des nombres de vbl par palette moveq.l #0,d6 move.b 287(a5),d6 ; Num‚ro de la palette affich‚ 0 a 7 move.w d6,d7 lsl.b #5,d7 ; *32 adda.w d7,a5 ; addresse de la palette a l'‚cran * d4 ; Compteur vbl move.b d6,d3 ; Compteur palette moveq.l #9,d7 ; Stop en fin de cycle quand d7 = d3 ; ; aprŠs barre espace ; ;........................................................................ next_pal: lea.l 32(a5),a5 ; Adresse Palette suivante addq.b #1,d3 ; Conpteur palette +1 cmpi.b #8,d3 ; Derniere palette du buffer ? bne.s nb_vbl first_pal: moveq.l #0,d3 ; Compteur palette sur premiŠre palette move.l 64(sp),a5 ; Adresse premiŠre palette du buffer nb_vbl: moveq.l #0,d4 move.b 0(a6,d3.w),d4 ; Nombre de VBL pour cette palette beq.s next_pal ; 0 = not display this palettte lsl.b #1,d4 ; subq.b #1,d4 ; -1 pour dbra moveq.l #7,d5 ; 16 couleurs movea.l #$ffff8240,a3 pal_display: move.l (a5)+,(a3)+ dbra.w d5,pal_display suba.l #32,a5 move.b $fffffc02.w,d0 cmp.b #$39,d0 : barre espace ? bne.s no_key move.b d6,d7 ; Force fin cycle no_key: cmp.b d3,d7 ; Fin cycle ? beq.s end_prg vsync: move.w #37,-(sp) trap #14 addq.l #2,sp dbra.w d4,vsync bra.s next_pal ;.............................. end_prg: movem.l (a7)+,d0-d7/a0-a6 rts end ;-------------------------------------------------------------------------