01: ;rockyone pour MI-3
02: ;
03: ;
04: ; CYCLE COULEURS : ART DIRECTOR : ART ( basse r�solution )
05: ; ------------------------------------------------------------
06: ;
07: ;Anime buffer 512 octets
08: ; +0 8 palette 16 words colors
09: ; +256 8 octets 1 octet par palette valeur 0 � 9
10: nombre de vbl pour chaque palette
11: ; 0 = pal not display
12: ;
13: ; +287 1 byte numero de la palette de l'image 0 � 8
14: ;
15: ; +288 a +512 inutilis�
16: ;
17: ; call Art_cycle( L Anime)
18: ;
19: ;
20: ;------------------------------------------------------------------------
21: movem.l d0-d7/a0-a6,-(a7)
22: move.l 64(sp),a5
23:
24: lea.l 256(a5),a6 ; Adresse des nombres de vbl par palette
25: moveq.l #0,d6
26: move.b 287(a5),d6 ; Num�ro de la palette affich� 0 a 7
27: move.w d6,d7
28:
29: lsl.b #5,d7 ; *32
30: adda.w d7,a5 ; addresse de la palette a l'�cran
31:
32: * d4 ; Compteur vbl
33: move.b d6,d3 ; Compteur palette
34: moveq.l #9,d7 ; Stop en fin de cycle quand d7 = d3
35: ; ; apr�s barre espace
36: ;
37: ;........................................................................
38: next_pal:
39: lea.l 32(a5),a5 ; Adresse Palette suivante
40: addq.b #1,d3 ; Conpteur palette +1
41: cmpi.b #8,d3 ; Derniere palette du buffer ?
42: bne.s nb_vbl
43:
44: first_pal:
45: moveq.l #0,d3 ; Compteur palette sur premi�re palette
46: move.l 64(sp),a5 ; Adresse premi�re palette du buffer
47:
48: nb_vbl:
49: moveq.l #0,d4
50: move.b 0(a6,d3.w),d4 ; Nombre de VBL pour cette palette
51: beq.s next_pal ; 0 = not display this palettte
52:
53: lsl.b #1,d4 ;
54: subq.b #1,d4 ; -1 pour dbra
55:
56: moveq.l #7,d5 ; 16 couleurs
57: movea.l #$ffff8240,a3
58: pal_display:
59: move.l (a5)+,(a3)+
60: dbra.w d5,pal_display
61: suba.l #32,a5
62:
63: move.b $fffffc02.w,d0
64: cmp.b #$39,d0 : barre espace ?
65: bne.s no_key
66: move.b d6,d7 ; Force fin cycle
67: no_key:
68: cmp.b d3,d7 ; Fin cycle ?
69: beq.s end_prg
70:
71: vsync:
72: move.w #37,-(sp)
73: trap #14
74: addq.l #2,sp
75: dbra.w d4,vsync
76:
77: bra.s next_pal
78:
79: ;..............................
80: end_prg:
81: movem.l (a7)+,d0-d7/a0-a6
82: rts
83:
84: end
85: ;-------------------------------------------------------------------------