File: ART_CYCL.S - Tab length: 1 2 4 8 - Lines: on off - No wrap: on off

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: ;-------------------------------------------------------------------------