304 lines
6.7 KiB
NASM
304 lines
6.7 KiB
NASM
.TITLE 'FBSTUFF.ASM'
|
||
.WIDTH 132
|
||
.OPTION B,D,L,T
|
||
.MNOLIST
|
||
|
||
; ROUTINES STOLEN FROM HIGH IMPACT FOOTBALL
|
||
;
|
||
; INITIATED: JAN 10,1991
|
||
; MODIFIED: !
|
||
; SOFTWARE: MARK TURMELL
|
||
;
|
||
; COPYRIGHT (C) 1989 WILLIAMS ELECTRONICS GAMES, INC.
|
||
;
|
||
;
|
||
; GET THE SYSTEM STUFF
|
||
|
||
.INCLUDE "MPROC.EQU" ;MPROC EQUATES
|
||
.INCLUDE "\VIDEO\SYS\SYS.INC" ;Z UNIT SYSTEM EQUATES
|
||
.INCLUDE "\VIDEO\SYS\MACROS.HDR" ;MACROS DEFINITIONS
|
||
.INCLUDE "GAME.EQU"
|
||
;
|
||
;SOUNDS
|
||
;
|
||
;
|
||
;SYMBOLS EXTERNALLY DEFINED
|
||
;
|
||
.REF PALSET,PALRAM
|
||
;
|
||
;SYMBOLS DEFINED IN THIS FILE
|
||
;
|
||
.DEF FB_FADEOUT,FB_FADEIN
|
||
|
||
PID_FX .EQU 200
|
||
|
||
.TEXT
|
||
|
||
**************************************************************************
|
||
* *
|
||
* FADEALL *
|
||
* *
|
||
* FADE EVERYTHING USING A GIVEN FADE ENTRY *
|
||
* *
|
||
* ENTRY *
|
||
* A0 LIST OF PALETTES *
|
||
* A11 FADE MULT TABLE *
|
||
* *
|
||
* EXIT *
|
||
* NOTHING *
|
||
* *
|
||
* CALL *
|
||
* CALL *
|
||
* *
|
||
**************************************************************************
|
||
|
||
FADEALL:
|
||
mmtm SP,A0,A1,A2,A6,A7,A8,A9,A11
|
||
JRUC Fader
|
||
|
||
**************************************************************************
|
||
* *
|
||
* FADEIN *
|
||
* *
|
||
* FADE A LIST OF PALETTES FROM BLACK TO THEIR CURRENT COLORS *
|
||
* *
|
||
* ENTRY *
|
||
* A0 PTR TO NULL TERMINATED LIST **NOT** TO FADE *
|
||
* *
|
||
* EXIT *
|
||
* NOTHING *
|
||
* *
|
||
**************************************************************************
|
||
|
||
FB_FADEIN:
|
||
mmtm SP,A0,A1,A2,A6,A7,A8,A9,A11
|
||
movi FadeIn,A11
|
||
jruc Fader
|
||
|
||
**************************************************************************
|
||
* *
|
||
* FADEOUT *
|
||
* *
|
||
* FADE A LIST OF PALETTES DOWN TO BLACK *
|
||
* *
|
||
* ENTRY *
|
||
* A0 PTR TO NULL TERMINATED LIST **NOT** TO FADE *
|
||
* *
|
||
* EXIT *
|
||
* NOTHING *
|
||
* *
|
||
**************************************************************************
|
||
|
||
FB_FADEOUT:
|
||
mmtm SP,A0,A1,A2,A6,A7,A8,A9,A11
|
||
movi FadeOut,A11
|
||
|
||
Fader:
|
||
move A0,A6
|
||
|
||
;* WALK EUGENES PALETTE TABLE, START PROC TO FADE EACH PALETTE *
|
||
clr A9 ;palette slot
|
||
dec A9
|
||
movi PALRAM-PALRSIZ,A2 ;base of eugenes palette table
|
||
PalLp:
|
||
addi PALRSIZ,A2
|
||
inc A9
|
||
cmpi NUMPAL,A9
|
||
jrge PalLpX
|
||
|
||
move *A2(PALCNT),A1,W ;is palette allocated?
|
||
jrz PalLp
|
||
move *A2(PALID),A8,L ;Ptr to palette
|
||
;*** SKIP FADING PALS IN LIST POINTED TO BY A6
|
||
move A6,A7
|
||
jrz SkFPalX
|
||
SkPalLp:
|
||
move *A7+,A1,L
|
||
jrz SkFPalX
|
||
cmp A1,A8
|
||
jreq PalLp
|
||
jruc SkPalLp
|
||
SkFPalX:
|
||
CREATE PID_FX,FADEPROC
|
||
jruc PalLp
|
||
PalLpX:
|
||
|
||
mmfm SP,A0,A1,A2,A6,A7,A8,A9,A11
|
||
rets
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* FADE_ONLY *
|
||
* *
|
||
* FADE ONLY A CERTAIN PALETTE *
|
||
* *
|
||
* ENTRY *
|
||
* A0 PALETTE TO BE FADED *
|
||
* A11 MULTIPLIER FOR PALETTES *
|
||
* *
|
||
* EXIT *
|
||
* NOTHING *
|
||
* *
|
||
* CALL *
|
||
* CALLA *
|
||
* *
|
||
**************************************************************************
|
||
|
||
FADE_ONLY:
|
||
mmtm SP,A0,A1,A2,A6,A7,A8,A9,A11
|
||
move A0,A6
|
||
|
||
;* WALK EUGENES PALETTE TABLE, START PROC TO FADE EACH PALETTE *
|
||
|
||
clr A9 ;palette slot
|
||
dec A9
|
||
movi PALRAM-PALRSIZ,A2 ;base of eugenes palette table
|
||
FOPalLp:
|
||
addi PALRSIZ,A2
|
||
inc A9
|
||
cmpi NUMPAL,A9
|
||
jrge FOPalLpX
|
||
|
||
move *A2(PALCNT),A1,W ;is palette allocated?
|
||
jrz FOPalLp
|
||
move *A2(PALID),A8,L ;Ptr to palette
|
||
CMP A6,A8
|
||
JRNZ FOPalLp ; BR = NOT THE ONE FOR ME
|
||
CREATE PID_FX,FADEPROC
|
||
jruc FOPalLp
|
||
FOPalLpX:
|
||
mmfm SP,A0,A1,A2,A6,A7,A8,A9,A11
|
||
rets
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* FADEPROC *
|
||
* *
|
||
* PROCESS TO ACTUALLY FADE A PALETTE *
|
||
* *
|
||
* ENTRY *
|
||
* A8 PTR TO PALETTE TO BE FADED *
|
||
* A9 PALETTE SLOT OF PALETTE *
|
||
* A11 FADE MULTIPLIER TABLE *
|
||
* *
|
||
* EXIT *
|
||
* NOTHING *
|
||
* *
|
||
**************************************************************************
|
||
|
||
FADEPROC:
|
||
sll 24,A9 ;B8-15 DEST PAL | B0-7 START COLOR
|
||
srl 16,A9
|
||
|
||
.IF YUNIT
|
||
MOVE A9,A2
|
||
SRL 12,A2
|
||
SLL 14,A2
|
||
SLL 20,A9
|
||
SRL 20,A9
|
||
ADD A2,A9
|
||
.ENDIF
|
||
|
||
FadePLp:
|
||
;**** SET UP FADED PAL IN PROCESS DATA SPACE ****
|
||
move *A11+,A2,W ;A2 - Color Multiplier
|
||
jrn FadePrcX
|
||
move A13,A0
|
||
addi PDATA,A0 ;A0 - Dest Ram for Pal
|
||
move A8,A1 ;A1 - Src for Pal
|
||
callr FadePal
|
||
|
||
;**** GET FADED PALETTE XFERRED TO PALRAM ****
|
||
move A9,A1 ;B8-15 DEST PAL | B0-7 START COLOR
|
||
move A13,A0
|
||
addi PDATA,A0 ;SRC FOR XFER
|
||
move *A0+,A2,W ;GET # COLORS IN PALETTE
|
||
calla PALSET ;SETUP PALETTE TRANSFER
|
||
|
||
SLEEP 2
|
||
jruc FadePLp
|
||
|
||
FadePrcX:
|
||
SLEEP 1 ;give last xfer a chance to go
|
||
DIE
|
||
|
||
**************************************************************************
|
||
* *
|
||
* FADEPAL *
|
||
* *
|
||
* APPLY THE COLOR MULTIPLIER AND DO ONE ITERATION ON THE PALETTE *
|
||
* *
|
||
* ENTRY *
|
||
* A0 DESTINATION RAM FOR PALETTE *
|
||
* A1 SOURCE FOR PALETTE *
|
||
* A2 COLOR MULTIPLIER *
|
||
* *
|
||
* EXIT *
|
||
* NOTHING *
|
||
* *
|
||
* NOTE: EACH COLOR IN PALETTE WILL BE MULTIPLIED BY A2 THEN *
|
||
* DIVIDED BY 128 *
|
||
* *
|
||
**************************************************************************
|
||
|
||
FadePal:
|
||
mmtm SP,A8,A9,A10,A11
|
||
|
||
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
|
||
; and A11,A7 ;unnecessary cause bottom bits will get >> 7
|
||
|
||
or A5,A3
|
||
or A7,A3
|
||
srl 7,A3
|
||
move A3,*A0+,W
|
||
dsjs A14,FadeLp
|
||
|
||
mmfm SP,A8,A9,A10,A11
|
||
rets
|
||
|
||
FadeIn .word 0,0,8,16,24,32,40,48,56,64,72,80,88,96,104,112,120,128,>FFFF
|
||
FadeOut .word 120,112,104,96,88,80,72,64,56,48,40,32,24,16,8,0,>FFFF
|
||
|
||
.END
|
||
|
||
|