* FADE COLOURS ROUTINE

* © 1992  DAVID 'BART' DUSTIN / KAOS PRODUCTIONS


FADECOLS:
    CMP.W     #0,FADECOUNT              ; Have we finished fading
    BEQ.S     .NOFADE                   ; Don't do anything if we have
    SUBQ      #1,FADECOUNT              ; Subtract one from fadecounter
	
    LEA       COLSPACE,A0               ; Pointer to new colours
    LEA       COLS+2,A1                 ; Pointer to old colours
    MOVEQ     #7,D0                     ; Number of colours -1
    MOVEQ     #4,D1                     ; Distance between colours

.FADELOOP
    MOVE.W    #%1111000000000000,D4     ; We only want one col at a time
	
    BSR.S     .DOWORK
    BEQ.S     .NORED
    BGT.S     .SUBRED

    ADD.W     #$0200,(A1)                ; Increase Red value

.SUBRED
    SUB.W     #$0100,(A1)                ; Decrease Red value

.NORED
    BSR.S     .DOWORK
    BEQ.S     .NOGREEN
    BGT.S     .SUBGREEN

    ADD.W     #$0020,(A1)                ; Increase Green value

.SUBGREEN
    SUB.W     #$0010,(A1)                ; Decrease Green value

.NOGREEN
    BSR.S     .DOWORK
    BEQ.S     .NOBLUE
    BGT.S     .SUBBLUE

    ADDQ.W    #$0002,(A1)               ; Increase Blue value

.SUBBLUE
    SUBQ.W    #$0001,(A1)               ; Decrease Blue value

.NOBLUE
    LEA       2(A0),A0                  ; Advance to next colour (word)
    ADD.L     D1,A1                     ; Distance between cols
    DBRA      D0,.FADELOOP

.NOFADE
    RTS                                 ; Exit from sub-routine

***************************************
.DOWORK
    LSR.W     #4,D4                     ; Advance to next value
    MOVE.W    (A0),D2                   ; Get new colour value
    MOVE.W    (A1),D3                   ; Get current colour value
    AND.W     D4,D2                     ; Only work with one section
    AND.W     D4,D3                     ; Only work with one section
    CMP.W     D2,D3                     ; Compare two values
    RTS


**********************************************************************
**********************************************************************
FADECOUNT:
    DC.W      16                        ; Maximum number of loops

***************************************
COLOURS:                                ; Table of new colours
    DC.W      $000,$222,$444,$666,$888,$AAA,$CCC,$EEE


*********************************************************************
COLS:                                   ; Colour palette in CopperList
    DC.L      $01800000,$01820000,$01840000,$01860000
    DC.L      $01880000,$018A0000,$018C0000,$018E0000
