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