405 lines
7.2 KiB
NASM
405 lines
7.2 KiB
NASM
|
.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
|
|||
|
|