.TITLE 'ROBO-RAMA' .FILE 'PALETTE FADER CONTROL' .WIDTH 132 .OPTION B,D,L,T .MNOLIST ; ; INITIATED: APRIL 13,1989 ; MODIFIED: ! ; SOFTWARE: MARK TURMELL ; ; COPYRIGHT (C) 1989 WILLIAMS ELECTRONICS GAMES, INC. ; ; ; GET THE SYSTEM STUFF .INCLUDE "MPROC.EQU" ;MPROC EQUATES .INCLUDE "DISP.EQU" ;DISPLAY PROC. EQUATES .INCLUDE "\VIDEO\SYS\SYS.INC" ;Z UNIT SYSTEM EQUATES .INCLUDE "\VIDEO\SYS\MACROS.HDR" ;MACROS DEFINITIONS .INCLUDE "IMGTBL.GLO" .INCLUDE "ROBO.EQU" ; ;SYMBOLS EXTERNALLY DEFINED ; .REF GETFPAL,PALSET,UNGETPAL,DELPAL,FINDPAL .REF IRQSKYE ; ;SYMBOLS DEFINED IN THIS FILE ; .DEF FADEOUT,FADEIN .DEF BLAKOUT .DEF AUTOPAL,AUTOPAL2,AUTOPAL3 ; ;EQUATES FIRST ORIGINATED IN THIS FILE ; ; ;UNINITIALIZED RAM DEFINITIONS ; .BSS FADERAM1,16*257,1 ;FADE RAM FOR PAL # 1 .BSS FADERAM2,16*257 ;DITTO 2 .BSS FADERAM3,16*257 ; 3 .BSS FADERAM4,16*257 ; 4 .BSS FADERAM5,16*2 ;AUTOERASE ;BLAKOUT - BLACK OUT SELECTED PALETTE ;PARAMS: ; A0 = NAME OF PALETTE TO BLACK OUT BLAKOUT: CALLA FINDPAL SLL 8,A0 MOVE A0,A1 JRZ NOTALLOC MOVI FADERAM1,A0 MOVI 128,A3 CLR A2 CLRBLP: MOVE A2,*A0+,L DSJS A3,CLRBLP ;NOW BLACK OUT PALETTE MOVI FADERAM1,A0 MOVI 256,A2 CALLA PALSET ;ERASE PALETTE SLOT NOTALLOC: RETS ;FADEIN - FADE IN ALL SELECTED PALETTES FROM BLACK ; IF PALETTE 'AUTOPAL' IS SPECIFIED AS THE FIRST PALETTE IN THE LIST ; THEN AUTOERASE WILL BE FADED WITH RESPECT TO THAT FIXED PALETTE. ;PARAMS: ; A0 = PTR TO LIST OF PALETTES TO FADE IN (AUTOERASE + 4 AT ONCE) ; A1 = FADE SPEED IN TIKS FADEIN: MOVE A1,A10 MOVE A0,A11 MOVE A0,A9 MOVE *A11,A0,L ; CMPI AUTOPAL3,A0 JRZ CRN2A CMPI AUTOPAL2,A0 JRZ CRN2A CMPI AUTOPAL,A0 JRNZ CRN2 CRN2A ADDI 32,A11 CRN2: CREATE FDPID,FADEIN2 RETS FADEIN2: MOVE *A11+,A0,L ;PAL #1 CALLA FINDPAL JRZ PALERR SLL 8,A0 MOVE A0,*A13(PDATA),W MOVE *A11+,A0,L ;PAL #2 JRZ DOFDE CALLA FINDPAL JRZ PALERR SLL 8,A0 MOVE A0,*A13(PDATA+16),W MOVE *A11+,A0,L ;PAL #3 JRZ DOFDE CALLA FINDPAL JRZ PALERR SLL 8,A0 MOVE A0,*A13(PDATA+32),W MOVE *A11+,A0,L ;PAL #4 JRZ DOFDE CALLA FINDPAL JRZ PALERR SLL 8,A0 MOVE A0,*A13(PDATA+48),W DOFDE: CLR A8 FDEINLUP: PUSHP A9 ADDK 8,A8 MOVE A8,A2 MOVI FADERAM5,A0 MOVE *A9,A1,L CMPI AUTOPAL3,A1 JRZ NOAUTINA CMPI AUTOPAL2,A1 JRZ NOAUTINA CMPI AUTOPAL,A1 JRNZ NOAUTIN NOAUTINA: CALLR FADEPAL ADDI 32,A9 NOAUTIN: MOVI FADERAM1,A0 MOVE *A9+,A1,L CALLR FADEPAL MOVI FADERAM2,A0 MOVE *A9+,A1,L JRZ UPPAL1 CALLR FADEPAL MOVI FADERAM3,A0 MOVE *A9+,A1,L JRZ UPPAL2 CALLR FADEPAL MOVI FADERAM4,A0 MOVE *A9+,A1,L JRZ UPPAL3 CALLR FADEPAL ; *A0= PALSRC = 32 BIT SOURCE ADDRESS OF PALETTE COLOR DATA *A1= PALDEST = BIT 8-15 DESTINATION PALETTE RAM | BIT 0-7 START COLOR *A2= PLDCNT = 16 BIT COLOR COUNT ; UPPAL4: MOVI FADERAM4,A0 MOVE *A13(PDATA+48),A1,W MOVE *A0+,A2,W CALLA PALSET UPPAL3: MOVI FADERAM3,A0 MOVE *A13(PDATA+32),A1,W MOVE *A0+,A2,W CALLA PALSET UPPAL2: MOVI FADERAM2,A0 MOVE *A13(PDATA+16),A1,W MOVE *A0+,A2,W CALLA PALSET UPPAL1: PULLP A9 MOVE *A9,A1,L CMPI AUTOPAL3,A1 JRZ NOA1A CMPI AUTOPAL2,A1 JRZ NOA1A CMPI AUTOPAL,A1 JRNZ NOA1 NOA1A: MOVI FADERAM5,A0 ADDI 16,A0 MOVE *A0,A0 MOVE A0,@IRQSKYE,W NOA1: MOVI FADERAM1,A0 MOVE *A13(PDATA),A1,W MOVE *A0+,A2,W CALLA PALSET MOVE A10,A0 CALLA PRCSLP CMPI 128,A8 JRLT FDEINLUP NOPAL: DIE ;FADEOUT - FADE OUT ALL SELECTED PALETTES TO BLACK ; IF PALETTE 'AUTOPAL' IS SPECIFIED AS THE FIRST PALETTE IN THE LIST ; THEN AUTOERASE WILL BE FADED WITH RESPECT TO THAT FIXED PALETTE. ;PARAMS: ; A0 = PTR TO LIST OF PALETTES TO FADE OUT (AUTOERASE + 4 AT ONCE) ; A1 = FADE SPEED IN TIKS FADEOUT: MOVE A1,A10 MOVE A0,A11 MOVE A0,A9 MOVE *A11,A0,L CMPI AUTOPAL3,A0 JRZ CRN1A CMPI AUTOPAL2,A0 JRZ CRN1A CMPI AUTOPAL,A0 JRNZ CRN1 CRN1A: ADDI 32,A11 CRN1: CREATE 0,FADEOUT2 RETS ; FADEOUT2: MOVE *A11+,A0,L ;PAL #1 CALLA FINDPAL JRZ PALERR SLL 8,A0 MOVE A0,*A13(PDATA),W MOVE *A11+,A0,L ;PAL #2 JRZ DOFDE2 CALLA FINDPAL JRZ PALERR SLL 8,A0 MOVE A0,*A13(PDATA+16),W MOVE *A11+,A0,L ;PAL #3 JRZ DOFDE2 CALLA FINDPAL JRZ PALERR SLL 8,A0 MOVE A0,*A13(PDATA+32),W MOVE *A11+,A0,L ;PAL #4 JRZ DOFDE2 CALLA FINDPAL JRZ PALERR SLL 8,A0 MOVE A0,*A13(PDATA+48),W DOFDE2: MOVI 128,A8 FDELUP: PUSHP A9 SUBK 8,A8 MOVE A8,A2 MOVI FADERAM5,A0 MOVE *A9,A1,L CMPI AUTOPAL3,A1 JRZ NOAUTUPA CMPI AUTOPAL2,A1 JRZ NOAUTUPA CMPI AUTOPAL,A1 JRNZ NOAUTUP NOAUTUPA: CALLR FADEPAL ADDI 32,A9 NOAUTUP: MOVI FADERAM1,A0 MOVE *A9+,A1,L CALLR FADEPAL MOVI FADERAM2,A0 MOVE *A9+,A1,L JRZ DNPAL1 CALLR FADEPAL MOVI FADERAM3,A0 MOVE *A9+,A1,L JRZ DNPAL2 CALLR FADEPAL MOVI FADERAM4,A0 MOVE *A9+,A1,L JRZ DNPAL3 CALLR FADEPAL ; *A0= PALSRC = 32 BIT SOURCE ADDRESS OF PALETTE COLOR DATA *A1= PALDEST = BIT 8-15 DESTINATION PALETTE RAM | BIT 0-7 START COLOR *A2= PLDCNT = 16 BIT COLOR COUNT ; DNPAL4: MOVI FADERAM4,A0 MOVE *A13(PDATA+48),A1,W MOVE *A0+,A2,W CALLA PALSET DNPAL3: MOVI FADERAM3,A0 MOVE *A13(PDATA+32),A1,W MOVE *A0+,A2,W CALLA PALSET DNPAL2: MOVI FADERAM2,A0 MOVE *A13(PDATA+16),A1,W MOVE *A0+,A2,W CALLA PALSET DNPAL1: PULLP A9 MOVE *A9,A1,L CMPI AUTOPAL3,A1 JRZ NOA2A CMPI AUTOPAL2,A1 JRZ NOA2A CMPI AUTOPAL,A1 JRNZ NOA2 NOA2A: MOVI FADERAM5,A0 ADDI 16,A0 MOVE *A0,A0 MOVE A0,@IRQSKYE,W NOA2: MOVI FADERAM1,A0 MOVE *A13(PDATA),A1,W MOVE *A0+,A2,W CALLA PALSET MOVE A10,A0 CALLA PRCSLP MOVE A8,A8 JRNZ FDELUP PALERR: DIE ; FADEPAL: ;PARAMS ; A0 - DEST RAM FOR PAL ; A1 - SRC FOR PAL ; A2 - COLOR MULTIPLIER ; EACH COLOR IN PALETTE WILL BE MULTIPLIED BY A2 THEN DIVIDED BY 128 MMTM SP,A0,A1,A3,A4,A5,A6,A7,A8,A9,A10,A11,A14 MOVE *A1+,A14,W MOVE A14,*A0+,W SLL 23,A14 ;TOP BITS OF FIELD ARE FLAGS SRL 23,A14 ;ONLY 9 BITS NEEDED FOR # COLORS MOVI >7C00,A4 ;A4 - PRE MULT MASK FOR 5 BITS OF RED MOVI >03E0,A6 ;A6 - PRE MULT MASK FOR 5 BITS OF GREEN MOVI >001F,A8 ;A8 - PRE MULT MASK FOR 5 BITS OF BLUE MOVE A4,A9 MOVE A6,A10 MOVE A8,A11 SLL 7,A9 ; A9 - POST MULT MAX FOR 5 BITS OF RED SLL 7,A10 ;A10 - POST MULT MAX FOR 5 BITS OF GREEN SLL 7,A11 ;A11 - POST MULT MAX FOR 5 BITS OF BLUE FADELP: MOVE *A1+,A3,W ;A3 - RED MOVE A3,A5 ;A5 - GREEN MOVE A3,A7 ;A7 - BLUE AND A4,A3 AND A6,A5 AND A8,A7 MPYU A2,A3 MPYU A2,A5 MPYU A2,A7 CMP A9,A3 JRLE REDOK MOVE A9,A3 REDOK: CMP A10,A5 JRLE GREENOK MOVE A10,A5 GREENOK: CMP A11,A7 JRLE BLUEOK MOVE A11,A7 BLUEOK: AND A9,A3 AND A10,A5 OR A5,A3 OR A7,A3 SRL 7,A3 MOVE A3,*A0+,W DSJS A14,FADELP MMFM SP,A0,A1,A3,A4,A5,A6,A7,A8,A9,A10,A11,A14 RETS AUTOPAL: .WORD 1,( 6 *32*32)+( 6 *32)+( 6 ) ;CONSTANT FOR AUTOERASE AUTOPAL2: .word 1,( 5 *32*32)+( 5 *32)+( 14 ) ; color 1 AUTOPAL3: .word 1,( 3 *32*32)+( 4 *32)+( 5 ) ; color 1 .END