3289 lines
84 KiB
NASM
3289 lines
84 KiB
NASM
.MLIB "GXMACS.LIB"
|
||
.FILE "GXPOWER.ASM"
|
||
.TITLE " <<< GENERATION X ---- POWER-UP ROUTINES >>>"
|
||
.WIDTH 132
|
||
.OPTION B,D,L
|
||
.MNOLIST
|
||
|
||
**************************************************************************
|
||
* *
|
||
* COPYRIGHT (C) 1992 MIDWAY MANUFACTURING COMPANY. *
|
||
* ALL RIGHTS RESERVED. *
|
||
* *
|
||
**************************************************************************
|
||
|
||
.INCLUDE "GX.INC"
|
||
.INCLUDE "GXPOWER.TBL"
|
||
.INCLUDE "GXSTRING.H"
|
||
.INCLUDE "GXUNZIP.INC"
|
||
.INCLUDE "IMGTBL.GLO"
|
||
|
||
*DO YOU HAVE ANY REFERENCES
|
||
|
||
.DEF POWERUP_DISPATCH, DO_HEADS_UP, CLR_HEADS_UP, INIT_SBOMB_PAGE
|
||
.DEF CLR_PLAYER_TEXT, ATTACH_PROCK, ATTACH_CD, PROC_DELAYED_SBOMB
|
||
.DEF PROCK_AWARD , POWERUP_GUNVECT, REVEAL_LIFE
|
||
.DEF REVEAL_CD2, REVEAL_SBOMB2, REVEAL_LIFE2
|
||
.DEF A_UNIVOBJ_TO_POWERUP,A_OBJ_TO_POWERUP, REVEAL_SHIELD
|
||
.DEF REVEAL_SUPERGUN, REVEAL_LAZER, THROW_SHIELD
|
||
.DEF ALTWEAP_TAB_3P, ALTWEAP_TAB_2P, ATTACH_SHIELD
|
||
.DEF REVEAL_CD_BUS,SEND_FLOAT_POWER
|
||
.DEF THROW_BOOBY_PRIZE, REVEAL_SUPERGUN2, REVEAL_SHIELD2
|
||
.DEF REVEAL_LAZER2
|
||
|
||
*SYMBOLS IN GXAFUNC.ASM
|
||
.REF SetAnim
|
||
*SYMBOLS IN GXRAM.ASM
|
||
.REF POWERUP_DURATION, ENEMY_QUOTA, SKYCOLOR, HOLD_ENEMY_DISPATCH
|
||
.REF SHIELD_AWARDS, ENERGY_AWARDS, SUPERGUN_AWARDS, LAZER_AWARDS
|
||
*SYMBOLS IN GXPLAYER.ASM
|
||
.REF POID_TO_PDATA, P_LED_ON
|
||
***** From GXUNZIP.ASM
|
||
.REF STILL
|
||
***** From GXJUNGLE.ASM
|
||
.REF JEWEL_AWARD
|
||
***** From GXPALL.ASM
|
||
.REF PALSET
|
||
* SYMBOLS FROM GXUNISEQ.ASM
|
||
.REF SND_MORPH
|
||
***** from GXWARREN.ASM
|
||
.REF C_OCONST
|
||
***** from GXSCORE.ASM
|
||
.REF PLAYER_SHIELD
|
||
|
||
|
||
POWERUP_FLASH_COLOR .EQU 0101H
|
||
|
||
M_PROCK .EQU 1 ;Flag for PPOWERHEADS for 3 CDs
|
||
M_CD .EQU 2 ;Flag for PPOWERHEADS for 10 CDs
|
||
|
||
**************************************************************************
|
||
* *
|
||
* A_UNIVOBJ_TO_POWERUP - CHANGE AN UNIVERSE OBJECT TO A POWERUP *
|
||
* *
|
||
* PASS: *
|
||
* A8 = OBJECT TO CHANGE *
|
||
* AARG+,W = OID OF POWERUP *
|
||
* RETURN: *
|
||
* NUTIN' *
|
||
* *
|
||
**************************************************************************
|
||
|
||
A_UNIVOBJ_TO_POWERUP
|
||
|
||
MOVE *A8(OULINK),A0,L
|
||
CLR A14
|
||
MOVE A14,*A8(OULINK),L
|
||
CALLA REMOVE_AND_FREE_LINK
|
||
|
||
A_OBJ_TO_POWERUP:
|
||
CALLA PULL_ANIM
|
||
CALLA PULL_SUPP
|
||
|
||
CALLA GETAFARG_WORD
|
||
MOVE A0,*A8(OID),W
|
||
|
||
CALLA INSERT_SUPP
|
||
|
||
ANDNIM M_NOSCALE,*A8(OFLAGS),W
|
||
|
||
CREATE PID_IND, UNIVOBJ_TO_POWERUP_PROC
|
||
MOVE A0,*A8(OPLINK),L
|
||
|
||
RETS
|
||
|
||
UNIVOBJ_TO_POWERUP_PROC
|
||
MOVI POWER_COLL,A14
|
||
MOVE A14,*A8(OCVECT),L
|
||
|
||
JRUC OP_G
|
||
|
||
**************************************************************************
|
||
* *
|
||
* WINGS_AWARD - AWARD AEROSMITH WINGS TO THE PLAYER. *
|
||
* A2 = PTR TO PLAYER *
|
||
* *
|
||
**************************************************************************
|
||
WINGS_AWARD
|
||
MMTM SP,A0,A1
|
||
|
||
MOVE *A2(PWINGS),A14,W ;GET WINGS COUNT
|
||
INC A14 ;ADD MORE WINGS
|
||
MOVE A14,*A2(PWINGS),W
|
||
|
||
SOUND1 SND_MORPH
|
||
|
||
MOVI WINGS_TAB_3P,A0
|
||
MOVI WINGS_TAB_2P,A1
|
||
CALLR DO_HEADS_UP
|
||
|
||
MMFM SP,A0,A1
|
||
RETS
|
||
|
||
NPOWERUPS .EQU 16 ;MAX IS 16 UNTIL > PROCSIZE
|
||
POWERUPCNT .EQU PDATA
|
||
POWERUPSUB .EQU PDATA+10H ;SUBWAVE WE WERE CREATED UPON
|
||
POWERUPUSED .EQU PDATA+20H
|
||
POWERUPDATA .EQU POWERUPUSED + (NPOWERUPS*8)
|
||
|
||
; MOVK NUM_BOMB,A1
|
||
|
||
**************************************************************************
|
||
* *
|
||
* POWERUP_DISPATCH - PROCESS TO RANDOMLY SELECT FROM THE AVAILABLE *
|
||
* POWERUPS THIS WAVE AND OUTPUT THEM. *
|
||
* A8 = SLEEP TIME BETWEEN POWERUPS *
|
||
* A9 = [RANDOM TO ADD, BASE NUMBER OF EACH POWERUP] *
|
||
* A10 = POWER-UP FLAGS (16 MAX) *
|
||
* POWERUP FLAGS: *
|
||
* *
|
||
**************************************************************************
|
||
POWERUP_DISPATCH
|
||
MOVE *A13(PROCID),A0,W
|
||
CALLA EXISTP_ALL
|
||
JRNZ PD_DIE
|
||
|
||
CALLA CLRPDATA
|
||
MOVE @SUBWAVE,A14,W
|
||
MOVE A14,*A13(POWERUPSUB),W ;SUBWAVE FOR DELETE
|
||
|
||
MOVY A9,A0
|
||
SRL 16,A0
|
||
JRZ PD_NORAND
|
||
ZEXT A9
|
||
INC A0
|
||
CALLA RANDU ;GET RANDOM TO ADD
|
||
DEC A0
|
||
ADD A0,A9 ;AND ADD IT
|
||
JRZ PD_HOLD_LP ;BR = NONE ALLOWED
|
||
PD_NORAND
|
||
MOVI POWERUP_TAB,A1
|
||
MOVE A13,A2
|
||
ADDI POWERUPDATA,A2
|
||
MOVI NPOWERUPS,A3
|
||
CLR A4
|
||
|
||
PD_INIT_LP
|
||
SRL 1,A10
|
||
JRC PD_CHOICE
|
||
ADDK 32,A1 ;SKIP THIS ROUTINE
|
||
JRUC PD_INIT_NXT
|
||
PD_CHOICE
|
||
MOVE *A1+,*A2+,L ;GET THE ROUTINE
|
||
INC A4
|
||
PD_INIT_NXT
|
||
DSJ A3,PD_INIT_LP
|
||
|
||
MOVE A4,*A13(POWERUPCNT),W
|
||
|
||
LD_IMM
|
||
MOVE *A13(PROCID),A0,W
|
||
CALLA EXISTP_ALL ;IS THERE A POWERUP OUT THERE?
|
||
JRNZ LD_RAND_NXT ;BR = YES, WAIT FOR IT TO CRUISE
|
||
|
||
LD_LOOP
|
||
SLEEPR A8 ;MIN TIME BETWEEN OBJECTS
|
||
MOVE *A13(POWERUPSUB),A0,W
|
||
MOVE @SUBWAVE,A14,W
|
||
CMP A0,A14 ;SAME SUBWAVE?
|
||
JRNE PD_DIE ;BR = NO, DELETE ME BOY
|
||
|
||
MOVE @ENEMY_QUOTA,A14,W ;IS THE WAVE SUPPOSED TO BE OVER?
|
||
JRNZ LD_LOOP ;BR = YES
|
||
|
||
MOVE *A13(POWERUPCNT),A0,W
|
||
CALLA RANDU ;SELECT AN AVAILABLE POWERUP
|
||
DEC A0
|
||
MOVE A0,A6
|
||
SLL 3,A6
|
||
ADD A13,A6
|
||
ADDI POWERUPUSED,A6
|
||
MOVB *A6,A2
|
||
CMP A9,A2 ;HAVE WE USED ALL OF THIS TYPE?
|
||
JRLO LD_OK ;BR = NO
|
||
LD_RAND_NXT
|
||
SLOOP 5,LD_IMM
|
||
|
||
LD_OK
|
||
MOVE A0,A14
|
||
SLL 5,A14
|
||
ADDI POWERUPDATA,A14
|
||
ADD A13,A14
|
||
|
||
MOVE *A14+,A7,L
|
||
|
||
INC A2
|
||
MOVB A2,*A6 ;SHOW THE NEW COUNT
|
||
|
||
MOVE *A13(PROCID),A1,W
|
||
CALLA GETPRC
|
||
|
||
SLEEP 4
|
||
|
||
MOVE *A13(POWERUPCNT),A4,W
|
||
MOVE A13,A1
|
||
ADDI POWERUPUSED,A1
|
||
LD_CK_LP
|
||
MOVB *A1,A0 ;SEE IF WE'VE EXHAUSTED ALL POWERUPS
|
||
CMP A9,A0
|
||
JRLO LD_IMM
|
||
ADDK 8,A1
|
||
DSJS A4,LD_CK_LP
|
||
|
||
PD_HOLD_LP
|
||
MOVE *A13(POWERUPSUB),A0,W
|
||
MOVE @SUBWAVE,A14,W
|
||
CMP A0,A14 ;SAME SUBWAVE?
|
||
JRNE PD_DIE ;BR = NO, RID O' PROCESS.
|
||
SLOOP 20,PD_HOLD_LP ;JUST HANG TO STALL MORE POWERUPS
|
||
PD_DIE
|
||
DIE
|
||
|
||
*
|
||
*TABLE OF POWERUP PROCESSES TO START
|
||
*
|
||
POWERUP_TAB
|
||
|
||
**************************************************************************
|
||
* *
|
||
* THROW_BOOBY_PRIZE - THROW MAMMERY BOOBY PRIZE AWARD POWERUP IN THE AIR *
|
||
* *
|
||
* A8 = IMG THIS IS COMING FROM *
|
||
* A9 = [Z,Y,X] OFFSET ( Z WORLD << 16 + Y SCREEN << 8 + X SCREEN) *
|
||
* A10 = [MAX, MIN] Z VELOCITY (MAX Z VEL << 16 + MIN Z VEL) *
|
||
* A11 = [Y,X] VELOCITY STUFF ( [Y MINIMUM VELOCITY >> 12] << 16 + *
|
||
* X VELOCITY RANGE >> 12 (FOR UNFLIPPED) ) *
|
||
* *
|
||
**************************************************************************
|
||
|
||
THROW_BOOBY_PRIZE
|
||
MOVI BOOBY_PRIZE_INIT,B0
|
||
JRUC THROW_POWERUP_FLIP
|
||
|
||
**************************************************************************
|
||
* *
|
||
* THROW_PROCK - THROW ROCKET POWERUP INTO THE AIR *
|
||
* *
|
||
* A8 = IMG THIS IS COMING FROM *
|
||
* A9 = [Z,Y,X] OFFSET ( Z WORLD << 16 + Y SCREEN << 8 + X SCREEN) *
|
||
* A10 = [MAX, MIN] Z VELOCITY (MAX Z VEL << 16 + MIN Z VEL) *
|
||
* A11 = [Y,X] VELOCITY STUFF ( [Y MINIMUM VELOCITY >> 12] << 16 + *
|
||
* X VELOCITY RANGE >> 12 (ABSOLUTE VALUE) ) *
|
||
* *
|
||
**************************************************************************
|
||
|
||
THROW_PROCK
|
||
MOVI PROCK_INIT,B0
|
||
JRUC THROW_POWERUP
|
||
|
||
**************************************************************************
|
||
* *
|
||
* THROW_CD - THROW CD POWERUP INTO THE AIR *
|
||
* *
|
||
* A8 = IMG THIS IS COMING FROM *
|
||
* A9 = [Z,Y,X] OFFSET ( Z WORLD << 16 + Y SCREEN << 8 + X SCREEN) *
|
||
* A10 = [MAX, MIN] Z VELOCITY (MAX Z VEL << 16 + MIN Z VEL) *
|
||
* A11 = [Y,X] VELOCITY STUFF ( [Y MINIMUM VELOCITY >> 12] << 16 + *
|
||
* X VELOCITY RANGE >> 12 (ABSOLUTE VALUE) ) *
|
||
* *
|
||
**************************************************************************
|
||
|
||
THROW_CD
|
||
MOVI CD_INIT,B0
|
||
JRUC THROW_POWERUP
|
||
|
||
**************************************************************************
|
||
* *
|
||
* THROW_SHIELD *
|
||
* *
|
||
* Throw shield powerup into the air. *
|
||
* *
|
||
* A8 = Originating object *
|
||
* A9 = [Z,Y,X] Offset (Z world << 16 + Y screen << 9 + X screen) *
|
||
* A10 = [MAX,MIN] Z velocity *
|
||
* A11 = [Y,X] Velocity stuff *
|
||
* *
|
||
**************************************************************************
|
||
THROW_SHIELD
|
||
MOVI SHIELD_INIT,B0
|
||
JRUC THROW_POWERUP
|
||
|
||
**************************************************************************
|
||
* *
|
||
* THROW_POWERUP_FLIP - THROW POWERUP INTO THE AIR AND X DIR DEPENDS ON FLIP *
|
||
* *
|
||
* B0 = PTR TO CREATION TABLE *
|
||
* A8 = IMG THIS IS COMING FROM *
|
||
* A9 = [Z,Y,X] OFFSET ( Z WORLD << 16 + Y SCREEN << 8 + X SCREEN) *
|
||
* A10 = [MAX, MIN] Z VELOCITY (MAX Z VEL << 16 + MIN Z VEL) *
|
||
* A11 = [Y,X] VELOCITY STUFF ( [Y MINIMUM VELOCITY >> 12] << 16 + *
|
||
* X VELOCITY RANGE >> 12 (FOR UNFLIPPED) ) *
|
||
* *
|
||
**************************************************************************
|
||
|
||
THROW_POWERUP_FLIP
|
||
PUSH A8
|
||
CALLA MULTIMAKE
|
||
PULL A3 ;PULL MUST PRESERVE STATUS, DON'T USE PULLQ
|
||
JRZ OP_DIE
|
||
|
||
MOVE A11,A0
|
||
SRA 16,A0 ;MAXIMUM Y VELOCITY
|
||
SLL 12,A0
|
||
; MOVI -09000H,A1
|
||
; CALLA RANGERND
|
||
MOVE A0,*A8(OYVEL),L
|
||
|
||
SEXT A11,W
|
||
SLL 12,A11
|
||
MOVE A11,A0 ;MAXIMUM X VELOCITY
|
||
MOVE *A3(OCTRL),A14,W
|
||
BTST B_FLIPH,A14
|
||
JRZ TPF_GET_X ;BR=UNFLIPPED
|
||
NEG A0
|
||
TPF_GET_X
|
||
MOVE A0,A1
|
||
SRA 1,A1
|
||
CALLA RANGERND
|
||
MOVE A0,*A8(OXVEL),L
|
||
|
||
JRUC TP_GO
|
||
|
||
**************************************************************************
|
||
* *
|
||
* THROW_POWERUP - THROW POWERUP INTO THE AIR *
|
||
* *
|
||
* B0 = PTR TO CREATION TABLE *
|
||
* A8 = IMG THIS IS COMING FROM *
|
||
* A9 = [Z,Y,X] OFFSET ( Z WORLD << 16 + Y SCREEN << 8 + X SCREEN) *
|
||
* A10 = [MAX, MIN] Z VELOCITY (MAX Z VEL << 16 + MIN Z VEL) *
|
||
* A11 = [Y,X] VELOCITY STUFF ( [Y MINIMUM VELOCITY >> 12] << 16 + *
|
||
* X VELOCITY RANGE >> 12 (ABSOLUTE VALUE) ) *
|
||
* *
|
||
**************************************************************************
|
||
|
||
THROW_POWERUP
|
||
PUSH A8
|
||
CALLA MULTIMAKE
|
||
PULL A3 ;PULL MUST PRESERVE STATUS, DON'T USE PULLQ
|
||
JRZ OP_DIE
|
||
|
||
MOVE A11,A0
|
||
SRA 16,A0 ;MAXIMUM Y VELOCITY
|
||
SLL 12,A0
|
||
MOVI -09000H,A1
|
||
CALLA RANGERND
|
||
MOVE A0,*A8(OYVEL),L
|
||
|
||
SEXT A11,W
|
||
SLL 12,A11
|
||
MOVE A11,A0 ;MAXIMUM X VELOCITY
|
||
MOVE A0,A1 ;MINIMUM X VELOCITY
|
||
NEG A1
|
||
CALLA RANGERND
|
||
MOVE A0,*A8(OXVEL),L
|
||
TP_GO
|
||
MOVIM POWERUP_FLASH_COLOR,*A8(OCONST),W
|
||
|
||
MOVE *A3(OXVAL),A1,L
|
||
MOVE A9,A14
|
||
SLL 24,A14
|
||
SRA 24-15,A14
|
||
ADD A14,A1 ;X OFFSET
|
||
|
||
MOVE *A3(OYVAL),A2,L
|
||
MOVE A9,A14
|
||
SEXT A14,W
|
||
SRA 8,A14
|
||
SLL 15,A14
|
||
ADD A14,A2 ;Y OFFSET
|
||
|
||
MOVE *A3(OZVAL),A3,L
|
||
SRA 16,A9
|
||
ADD A9,A3 ;Z OFFSET
|
||
|
||
CALLA SET_ANIPU
|
||
|
||
MOVE A10,A0
|
||
SRA 16,A0 ;MAXIMUM Z VELOCITY
|
||
MOVE A10,A1
|
||
SEXT A1,W ;MINIMUM Z VELOCITY
|
||
CALLA RANGERND
|
||
MOVE A0,*A8(OZVEL),L
|
||
|
||
MOVI 03000H,A14
|
||
MOVE A14,*A8(OYACCEL),W
|
||
|
||
ORIM M_GCOLL,*A8(OFLAGS),W
|
||
|
||
MOVE A13,*A8(OPLINK),L
|
||
CALLA INSERT_OBJ
|
||
CLR A11 ;NONE SHALL KNOW
|
||
;TP_WAIT
|
||
; SLEEP 2
|
||
; MOVE *A8(OYACCEL),A14,W
|
||
; JRNZ TP_WAIT ;BR=NOT ON GROUND YET
|
||
JRUC OP_G
|
||
|
||
.DEF THROW_CD_WARREN
|
||
|
||
SND_TO_PLYR .word 0f390h,100,081c8h,0
|
||
|
||
THROW_CD_WARREN:
|
||
MOVI PROCK_INIT,B0
|
||
|
||
**************************************************************************
|
||
* *
|
||
* THROW_POWERUP_WARREN - THROW POWERUP TOWARD PLAYER *
|
||
* *
|
||
* B0 = PTR TO CREATION TABLE *
|
||
* A9 = [Y,X] Screen position to reach at ZMIN_REAL *
|
||
* A10 = Starting Univ Z *
|
||
* A11 = Starting Univ [Y,X] shifted left by 4 *
|
||
* *
|
||
**************************************************************************
|
||
THROW_POWERUP_WARREN
|
||
CALLA MULTIMAKE
|
||
JRZ OP_DIE
|
||
|
||
MOVIM POWERUP_FLASH_COLOR,*A8(OCONST),W
|
||
|
||
move a11,a1
|
||
move a11,a2
|
||
sra 16,a2
|
||
sll 12,a2 ; restore Y
|
||
sll 16,a1 ; restore X
|
||
sra 4,a1
|
||
move a10,a3 ; set Z
|
||
|
||
CALLA SET_ANIPU
|
||
|
||
move @ZBASE,a14,L
|
||
sub a14,a3
|
||
subi ZMAX_REAL+200h,a3
|
||
sra 5,a3
|
||
neg a3
|
||
move a3,*a8(OZVEL),L
|
||
|
||
movi ZMAX_REAL+200h,a3
|
||
clr a5
|
||
movx a9,a5 ; Target Screen X in a5
|
||
sra 16,a9 ; Target Screen Y in a9
|
||
|
||
setf 16,1,1
|
||
SUBI HALFX,a5
|
||
MPYS a3,a5 ; Target WORLD X in a5
|
||
|
||
MOVE @YHALF,A14,W
|
||
SUB A14,a9
|
||
MPYS a3,a9 ; Target WORLD Y in a9
|
||
setf 32,0,1
|
||
|
||
move @XBASE,a14,L
|
||
sub a14,a1 ; Starting WORLD X in a1
|
||
sub a1,a5
|
||
sra 5,a5
|
||
move a5,*a8(OXVEL),L
|
||
|
||
move @YBASE,a14,L
|
||
add a14,a2 ; Starting WORLD Y in a2
|
||
sub a2,a9
|
||
sra 5,a9
|
||
subi 10000h,a9
|
||
move a9,*a8(OYVEL),L
|
||
|
||
MOVI 2200H,A14
|
||
MOVE A14,*A8(OYACCEL),W
|
||
|
||
ORIM M_GCOLL,*A8(OFLAGS),W
|
||
|
||
MOVE A13,*A8(OPLINK),L
|
||
CALLA INSERT_OBJ
|
||
CLR A11 ;NONE SHALL KNOW
|
||
|
||
SOUND1 SND_TO_PLYR
|
||
|
||
SLEEP 5
|
||
JRUC OP_G
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* FALL_SBOMB - PROCESS TO MAKE A SBOMB START AT A SCREEN RELATIVE *
|
||
* POINT AND FALL TO THE GROUND. ALL THE TIME WAITING *
|
||
* TO BE DETONATED BY A WILLING PLAYER. *
|
||
* A8 = OBJECT FALLING FROM *
|
||
* A10 = [Y,X] SCREEN RELATIVE POINT TO START *
|
||
* *
|
||
**************************************************************************
|
||
FALL_SBOMB
|
||
MOVI SBOMB_INIT,B0
|
||
CLR A11
|
||
JRUC FALLOUT_POWERUP
|
||
|
||
*
|
||
*FALLOUT_POWERUP - PROCESS TO MAKE A POWERUP FALLOUT OF THE SKY.
|
||
*B0 = PTR TO CREATION TABLE
|
||
*A8 = IMG THIS IS COMING FROM
|
||
*A10 = [Y,X] SCREEN RELATIVE CREATION POINT
|
||
*A11 = INITIAL YVEL
|
||
*
|
||
FALLOUT_POWERUP
|
||
PUSH A8
|
||
CALLA MULTIMAKE
|
||
MOVE A8,A0
|
||
PULL A8 ;PULL MUST PRESERVE STATUS, DON'T USE PULLQ
|
||
JRZ OP_DIE
|
||
|
||
MOVIM POWERUP_FLASH_COLOR,*A0(OCONST),W
|
||
|
||
; MOVB *A8(OPLANE),A1
|
||
MOVE A0,A8
|
||
CALLA STORE_OPLANE
|
||
MOVE A13,*A8(OPLINK),L
|
||
MOVIB 18H,*A8(OGRNDOFF)
|
||
ORIM M_GCOLL,*A8(OFLAGS),W
|
||
MOVE A11,*A8(OYVEL),L
|
||
MOVIM 7800H,*A8(OYACCEL),W
|
||
MOVI ZMAX,A1
|
||
CALLA STORE_ZVAL
|
||
MOVE A10,A1
|
||
CALLA SET_SCRN_POS
|
||
CALLA OBJ_TO_PNT
|
||
CALLA INSERT_OBJ
|
||
SLEEP 10 ;GIVE IT TIME OUT
|
||
JRUC OP_G
|
||
|
||
*
|
||
*FALLOUT2_POWERUP - PROCESS TO MAKE A POWERUP POP OUT TOWARDS THE PLAYERS.
|
||
*B0 = PTR TO CREATION TABLE
|
||
*A6 = OFFSET FROM GROUND
|
||
*A7 = ANIMATION SCRIPT
|
||
*A8 = IMG THIS IS COMING FROM
|
||
*A10 = [Y,X] OFFSET
|
||
*A11 = INITIAL YVEL
|
||
*
|
||
FALLOUT2_POWERUP
|
||
PUSH A8
|
||
CALLA MULTIMAKE
|
||
MOVE A8,A0
|
||
PULL A8 ;PULL MUST PRESERVE STATUS, DON'T USE PULLQ
|
||
JRZ OP_DIE
|
||
|
||
MOVIM POWERUP_FLASH_COLOR,*A0(OCONST),W
|
||
|
||
MOVE A10,A4
|
||
CALLA ADD_OFF2ANIP
|
||
MOVE *A8(OZVAL),A1,L
|
||
move @ZBASE,a14,L
|
||
add a14,a1
|
||
MOVE A0,A8
|
||
CALLA STORE_ZVAL
|
||
MOVE A13,*A8(OPLINK),L
|
||
ORIM M_GCOLL,*A8(OFLAGS),W
|
||
MOVB A6,*A8(OGRNDOFF)
|
||
; MOVE *A8(OFLAGS),A14,W
|
||
; XORI M_NOAUTOZ,A14
|
||
; MOVE A14,*A8(OFLAGS),W
|
||
; PUSH A8
|
||
; MOVE *A8(OPARTS),A8,L
|
||
; MOVE *A8(OFLAGS),A14,W
|
||
; XORI M_NOAUTOZ,A14
|
||
; MOVE A14,*A8(OFLAGS),W
|
||
; PULL A8
|
||
|
||
CLR A0
|
||
MOVK 3,A1
|
||
CALLA RANGERND
|
||
SLL 16,A0
|
||
MOVE A0,*A8(OXVEL),L
|
||
|
||
MOVE A11,*A8(OYVEL),L
|
||
|
||
MOVIM 7800H,*A8(OYACCEL),W
|
||
|
||
CALLA OBJ_TO_PNT
|
||
CALLA INSERT_OBJ
|
||
|
||
MOVE A7,A1
|
||
|
||
CALLA STRT_ANIM
|
||
SLEEP 10 ;GIVE IT TIME OUT
|
||
JRUC OP_G
|
||
|
||
|
||
*
|
||
*FALLOUT3_POWERUP - PROCESS TO MAKE A POWERUP FALL THROUGH THE SCREEN.
|
||
*B0 = PTR TO CREATION TABLE
|
||
*A8 = IMG THIS IS COMING FROM
|
||
*A10 = [Y,X] SCREEN RELATIVE CREATION POINT
|
||
*A11 = INITIAL YVEL
|
||
*
|
||
FALLOUT3_POWERUP
|
||
CALLA MULTIMAKE
|
||
JRZ OP_DIE
|
||
|
||
MOVIM POWERUP_FLASH_COLOR,*A8(OCONST),W
|
||
|
||
MOVI ZMAX,A1
|
||
CALLA STORE_ZVAL
|
||
MOVE A13,*A8(OPLINK),L
|
||
MOVE A11,*A8(OYVEL),L
|
||
MOVIM 1000H,*A8(OYACCEL),W
|
||
MOVE A10,A1
|
||
CALLA SET_SCRN_POS
|
||
CALLA OBJ_TO_PNT
|
||
CALLA INSERT_OBJ
|
||
CLR A11 ;NONE SHALL KNOW
|
||
SLEEP 10 ;GIVE IT TIME OUT
|
||
JRUC OP_G
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* ATTACH_SBOMB - PROCESS TO ATTACH A SMART BOMB TO A *
|
||
* GIVEN OBJECT *
|
||
* A10 = [Y,X] SCREEN OFFSET *
|
||
* A11 = OFFSET FOR OZVAL *
|
||
* *
|
||
**************************************************************************
|
||
ATTACH_SBOMB
|
||
MOVI SBOMB_INIT,B0
|
||
JRUC ATTACH_POWERUP
|
||
|
||
**************************************************************************
|
||
* *
|
||
* ATTACH_CD - PROCESS TO ATTACH A CD TO A *
|
||
* GIVEN OBJECT *
|
||
* A10 = [Y,X] SCREEN OFFSET *
|
||
* A11 = OFFSET FOR OZVAL *
|
||
* *
|
||
**************************************************************************
|
||
ATTACH_CD
|
||
MOVI CD_INIT,B0
|
||
JRUC ATTACH_POWERUP
|
||
|
||
**************************************************************************
|
||
* *
|
||
* ATTACH_PROCK - PROCESS TO ATTACH A ROCKET BOMB TO A *
|
||
* GIVEN OBJECT *
|
||
* A10 = [Y,X] SCREEN OFFSET *
|
||
* A11 = OFFSET FOR OZVAL *
|
||
* *
|
||
**************************************************************************
|
||
ATTACH_PROCK
|
||
MOVI PROCK_INIT,B0
|
||
JRUC ATTACH_POWERUP
|
||
|
||
**************************************************************************
|
||
* *
|
||
* ATTACH_SHIELD *
|
||
* *
|
||
* Process to attache a shield to a given object. *
|
||
* *
|
||
* A10 = [Y,X] Screen offset *
|
||
* A11 = Offset for OZVAL *
|
||
* *
|
||
**************************************************************************
|
||
ATTACH_SHIELD
|
||
MOVI SHIELD_INIT,B0
|
||
JRUC ATTACH_POWERUP
|
||
|
||
*
|
||
*ATTACH_POWERUP - PROCESS TO MAKE A POWERUP BECOME PART OF AN OBJECT ON
|
||
* SCREEN
|
||
*B0 = PTR TO CREATION TABLE
|
||
*A8 = IMG THIS IS TO BE ATTACHED TO
|
||
*A10 = [Y,X] SCREEN OFFSET FROM OBJECT ANIMATION POINT
|
||
*A11 = AMOUNT TO ADD TO OZVAL OF OBJECT FOR POWERUP
|
||
*
|
||
ATTACH_POWERUP
|
||
PUSH A8
|
||
CALLA MULTIMAKE
|
||
PULL A0 ;PULL MUST PRESERVE STATUS, DON'T USE PULLQ
|
||
JRZ OP_DIE
|
||
|
||
MOVIM POWERUP_FLASH_COLOR,*A8(OCONST),W
|
||
|
||
MOVIM 01994h,*a8(ODATA),W ; code to say this is head of a powerup
|
||
|
||
MOVE *A0(OXVAL),A1,L ;GET X POSITION
|
||
MOVE A10,A14
|
||
SEXT A14,W
|
||
SLL 15,A14 ;TRANSLATE OFFSET TO WORLD
|
||
ADD A14,A1 ;NEW X POSITION
|
||
|
||
MOVE *A0(OYVAL),A2,L ;GET Y POSITION
|
||
SRA 16,A10
|
||
SLL 15,A10 ;TRANSLATE OFFSET TO WORLD
|
||
ADD A10,A2 ;NEW Y POSITION
|
||
|
||
MOVE A8,A3
|
||
AP_PART_LUPE
|
||
MOVE A1,*A3(OXVAL),L
|
||
MOVE A2,*A3(OYVAL),L
|
||
MOVE *A3(OPARTS),A3,L
|
||
JRNZ AP_PART_LUPE
|
||
|
||
MOVE *A0(OZVAL),A1,L
|
||
sub A11,A1 ;ADD Z OFFSET
|
||
CALLA STORE_ZVAL
|
||
|
||
MOVE A13,*A8(OPLINK),L
|
||
CALLA INSERT_OBJ
|
||
SWAP a8,a0 ; new into a0, old into a8
|
||
calla INSPART
|
||
move a0,a8 ; new back into a8
|
||
|
||
MOVI AP_POWERUP_GUNVECT,A14 ; gunvector goes to head part only!!
|
||
MOVE A14,*A8(OGUNVECT),L
|
||
|
||
CLR A11 ;HOLD FLIGHT TIME HERE
|
||
MOVE @POWERUP_DURATION,A10,W ;GET THE NORMAL TIME
|
||
CLR A9
|
||
AP_POWERUP_TIMEOUT
|
||
CMPI 160,A10 ;ARE WE IN FLASH RANGE?
|
||
JRLS APT_FLASH ;BR = YES
|
||
SUBK 5,A10
|
||
JRLE APT_DONE
|
||
SLOOP 5,AP_POWERUP_TIMEOUT
|
||
|
||
APT_FLASH
|
||
MOVE *A8(OFLAGS),A14,W
|
||
BTST B_ANIM,A14
|
||
JRNZ APT_SLEEP ;BR = Animating, do not flash
|
||
|
||
MOVE A9,A9
|
||
JRZ APT_OFF
|
||
CLR A9
|
||
CALLA OBJ_CONST
|
||
JRUC APT_SLEEP
|
||
APT_OFF
|
||
MOVK 1,A9
|
||
CALLA OBJ_WNZ
|
||
|
||
APT_SLEEP
|
||
; MOVE A10,A14
|
||
; SRL 3,A14
|
||
; CMPK 4,A14
|
||
; JRHI APT_OK
|
||
; MOVI 4,A14
|
||
;APT_OK
|
||
; SUB A14,A10
|
||
; SLOOPR A14,AP_POWERUP_TIMEOUT
|
||
SUBK 4,A10
|
||
SLOOP 4,AP_POWERUP_TIMEOUT
|
||
|
||
APT_DONE
|
||
CALLA OBJ_WNZ
|
||
|
||
SLEEP 20
|
||
movi 01994h,a3
|
||
move *a8(OPART1),a5,L ; get head (obj attached to)
|
||
move a8,a0
|
||
AP_DEL_LP:
|
||
move *a0(OPARTS),a8,L
|
||
calla PULLPART
|
||
CALLA DELOBJ
|
||
move a8,a0
|
||
jrz awdone
|
||
move *a0(ODATA),a14 ; stop deleting parts if
|
||
cmp a3,a14 ; we hit the head of another powerup
|
||
jrne AP_DEL_LP
|
||
awdone:
|
||
move *a5(OPARTS),a14,L ; any more parts to head?
|
||
jrnz moparts
|
||
move a14,*a5(OPART1),L ; not a multi no more
|
||
moparts:
|
||
DIE
|
||
|
||
|
||
*
|
||
* This routine unlinks the hit powerup from the item
|
||
* it is attached to.
|
||
* a8 = powerup head (or obj if not multi)
|
||
*
|
||
AP_POWERUP_GUNVECT:
|
||
move *a8(OPART1),a14,L ; head (box)
|
||
move a14,a7 ; save a while
|
||
find_prev_part:
|
||
move a14,a1
|
||
move *a1(OPARTS),a14,L ; find the part before a8
|
||
cmp a8,a14
|
||
jrne find_prev_part
|
||
*
|
||
* a1 contains part before powerup head
|
||
* Find link after this powerup
|
||
*
|
||
movi 01994h,a5
|
||
move a14,a3
|
||
find_last_part:
|
||
move a3,a14
|
||
move *a14(OPARTS),a3,L ; look for 0 (end of multi)
|
||
jrz found_end
|
||
move *a3(ODATA),a6 ; look for code (start of a powerup)
|
||
cmp a5,a6
|
||
jrne find_last_part
|
||
clr a6
|
||
move a6,*a14(OPARTS),L ; terminate powerup
|
||
found_end:
|
||
*
|
||
* a3 contains link after end of powerup
|
||
*
|
||
move a3,*a1(OPARTS),L ; attach prev link to post link
|
||
|
||
move *a7(OPARTS),a14,L ; is only one part left to head?
|
||
jrnz still_multi
|
||
clr a14
|
||
move a14,*a7(OPART1),L ; head is not a multi no more
|
||
still_multi:
|
||
movi POWERUP_GUNVECT,a14 ; new GUNVECT
|
||
move a14,*a8(OGUNVECT),L ; stuff in head
|
||
move *a8(OPARTS),a1,L
|
||
jrz no_power_multi
|
||
move a8,*a8(OPART1),L ; new head in OPART1
|
||
new_head_lp:
|
||
move a8,*a1(OPART1),L ; stuff new head of powerup multi
|
||
move a14,*a1(OGUNVECT),L ; all parts have new gunvect
|
||
move *a1(OPARTS),a1,L ; more to stuff?
|
||
jrnz new_head_lp
|
||
jruc POWERUP_GUNVECT
|
||
no_power_multi:
|
||
clr a14 ; if powerup is not a multi
|
||
move a14,*a8(OPART1),L ; clear out OPART1
|
||
jruc POWERUP_GUNVECT
|
||
|
||
**************************************************************************
|
||
* *
|
||
* REVEAL_SBOMB - PROCESS TO PLACE A SMART BOMB IN RELATION TO A *
|
||
* GIVEN OBJECT *
|
||
* A10 = [Y,X] SCREEN OFFSET *
|
||
* A11 = OFFSET FOR OZVAL *
|
||
* *
|
||
**************************************************************************
|
||
REVEAL_SBOMB
|
||
MOVI SBOMB_INIT,B0
|
||
JRUC REVEAL_POWERUP
|
||
|
||
**************************************************************************
|
||
* *
|
||
* REVEAL_SBOMB2 - PROCESS TO PLACE A 2X SCALE SMART BOMB IN RELATION TO A *
|
||
* GIVEN OBJECT *
|
||
* A10 = [Y,X] SCREEN OFFSET *
|
||
* A11 = OFFSET FOR OZVAL *
|
||
* *
|
||
**************************************************************************
|
||
REVEAL_SBOMB2
|
||
MOVI SBOMB2_INIT,B0
|
||
JRUC REVEAL_POWERUP
|
||
|
||
*
|
||
* a8 = num to send (moved to a11)
|
||
* a9 = min ticks between
|
||
* a10 = max ticks between
|
||
*
|
||
SEND_FLOAT_POWER:
|
||
move a8,a11
|
||
sub a9,a10
|
||
SFP_lp:
|
||
SLEEPR a9
|
||
|
||
movi FLOAT_CD,a6
|
||
calla RANDOM
|
||
btst 13,a0
|
||
jrz randpick
|
||
movi FLOAT_PROCK,a6
|
||
randpick:
|
||
call a6
|
||
|
||
move a10,a0
|
||
calla RANDU
|
||
calla PRCSLP
|
||
dsjs a11,SFP_lp
|
||
|
||
DIE
|
||
|
||
|
||
FLOAT_PROCK_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_CD ;PAL LIST
|
||
.word OID_PROCK, 0
|
||
LWWWW XCDSM1, DMAWNZ, M_NOPIXSCAN|M_SCRNOBJ|M_NOSCALE, 0, OM_ANIM
|
||
.LONG FLT_CDSM_ANIM
|
||
|
||
FLOAT_CD_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_CD ;PAL LIST
|
||
.word OID_CD, 0
|
||
LWWWW XCD1, DMAWNZ, M_NOPIXSCAN|M_SCRNOBJ|M_NOSCALE, 0, OM_ANIM
|
||
.LONG FLT_CD_ANIM
|
||
|
||
FLT_CD_ANIM
|
||
LW XCD1,2
|
||
LW XCD2,2
|
||
LW XCD3,2
|
||
LW XCD4,2
|
||
LW XCD5,2
|
||
LW XCD6,2
|
||
LW XCD7,2
|
||
LWL XCD8,2|AFunc,A_DELETE_BOT
|
||
.long 0
|
||
|
||
FLT_CDSM_ANIM
|
||
LW XCDSM1,2
|
||
LW XCDSM2,2
|
||
LW XCDSM3,2
|
||
LW XCDSM4,2
|
||
LW XCDSM5,2
|
||
LW XCDSM6,2
|
||
LW XCDSM7,2
|
||
LWL XCDSM8,2|AFunc,A_DELETE_BOT
|
||
.long 0
|
||
|
||
|
||
A_DELETE_BOT
|
||
MOVE *A8(ODAGY),A1,W
|
||
MOVE @(SCRNBR+16),A14,W
|
||
CMP A14,A1
|
||
JAGT DELETE_OBJ_PROC ;BR=OFF DA BOTTOM
|
||
RETS
|
||
|
||
|
||
FLOAT_CD
|
||
movi FLOAT_CD_INIT,b0
|
||
jruc FLOAT_POWERUP
|
||
|
||
FLOAT_PROCK
|
||
movi FLOAT_PROCK_INIT,b0
|
||
jruc FLOAT_POWERUP
|
||
|
||
FLOAT_POWERUP
|
||
calla MULTIMAKE
|
||
jrz FLT_X
|
||
movi 380,a0
|
||
calla RANDU ; screen X in a0
|
||
addk 10,a0
|
||
move a0,*a8(OXPOS)
|
||
zext a0
|
||
move a0,*a8(ODAG),L
|
||
sra 16,a0
|
||
move a0,*a8(OYPOS)
|
||
movi 6800h,a14
|
||
move a14,*a8(OZVAL),L
|
||
calla INSERT_OBJ
|
||
movi 0e00h,a1
|
||
movi 2000h,a0
|
||
calla RANGRAND
|
||
move a0,*a8(OYACCEL),W
|
||
MOVIM SCRNPOWER_GUNV,*a8(OGUNVECT),L
|
||
CREATE PID_IND,OP_G_FLT
|
||
move a0,*a8(OPLINK),L
|
||
FLT_X:
|
||
rets
|
||
|
||
|
||
SCRNPOWER_GUNV:
|
||
move *a8(OFLAGS),a14
|
||
andni M_SCRNOBJ,a14
|
||
move a14,*a8(OFLAGS) ; no longer a screen obj
|
||
move *a8(OZVAL),a1,L ; world Z
|
||
move *a8(OXPOS),a3
|
||
subi HALFX,a3
|
||
mpys a1,a3 ; world X
|
||
move @XBASE,a14,L
|
||
add a14,a3
|
||
move a3,*a8(OXVAL),L
|
||
move *a8(OYPOS),a3
|
||
move @YHALF,a14
|
||
sub a14,a3
|
||
mpys a1,a3 ; world Y
|
||
move @YBASE,a14,L
|
||
add a14,a3
|
||
move a3,*a8(OYVAL),L
|
||
move @ZBASE,a14,L
|
||
add a14,a1
|
||
move a1,*a8(OZVAL),L
|
||
MOVIM POWERUP_GUNVECT,*a8(OGUNVECT),L
|
||
jruc POWERUP_GUNVECT
|
||
|
||
|
||
|
||
*
|
||
* NOTE! POWERUPS WHICH ARE PLACED IN THE SPHINX'S MOUTH
|
||
* ARE "NO_SCALED" INSIDE THE ROUTINE. YOU DO NOT NEED TO MAKE
|
||
* A SEPARATE INIT TABLE. YOU SHOULD MAKE SURE THAT THE POWER UP
|
||
* IS SMALL ENOUGH TO FIT IN THE SPHINX'S MOUTH! (NOT
|
||
* GUARANTEED)
|
||
*
|
||
BUS_CD_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_CD ;PAL LIST
|
||
.word OID_CD, 0
|
||
LWWWW XCDSM1, DMAWNZ, M_NOPIXSCAN, 0, OM_COLL | OM_ANIM
|
||
.LONG POWER_COLL
|
||
.LONG CDSM_ANIM
|
||
|
||
**************************************************************************
|
||
* *
|
||
* REVEAL_CD_BUS - PROCESS TO PLACE A CD IN RELATION TO A *
|
||
* GIVEN OBJECT *
|
||
* a8 = source object *
|
||
* A9 = UNIV X *
|
||
* A10 = UNIV Y *
|
||
* A11 = offset from object's UNIV Z *
|
||
* *
|
||
**************************************************************************
|
||
REVEAL_CD_BUS
|
||
sleep 24
|
||
MOVI BUS_CD_INIT,B0
|
||
|
||
REVEAL_POWER_BUS
|
||
PUSH A8
|
||
CALLA MULTIMAKE
|
||
PULL A2 ;PULL MUST PRESERVE STATUS, DON'T USE PULLQ
|
||
JRZ OP_DIE
|
||
|
||
movi P_SMCDG,a0 ; gold pal for small cd
|
||
calla CHANGE_PAL
|
||
|
||
CREATE PID_IND,SPHINX_PWR_KLUDGE
|
||
|
||
move a8,a0 ; powerup in a0
|
||
move a2,a8 ; original obj in a8
|
||
|
||
move *a0(OFLAGS),a14 ; set to noscale
|
||
ori M_NOSCALE,a14
|
||
move a14,*a0(OFLAGS)
|
||
|
||
move a9,a1 ; set X and Y position
|
||
move a10,a2
|
||
MOVE A0,A3
|
||
jruc RP_PART_LUPE
|
||
|
||
*
|
||
* This process waits till OP_G process has been started, then
|
||
* sneakily changes the gunvector to do some preprocessing.
|
||
*
|
||
SPHINX_PWR_KLUDGE:
|
||
sleep 13
|
||
MOVIM SPHINX_PWR_GUNV,*a8(OGUNVECT),L
|
||
DIE
|
||
|
||
.ref SNOZZ_COUNT
|
||
|
||
SPHINX_PWR_GUNV:
|
||
move @SNOZZ_COUNT,a14
|
||
inc a14
|
||
move a14,@SNOZZ_COUNT
|
||
MOVIM POWERUP_GUNVECT,*a8(OGUNVECT),L
|
||
jruc POWERUP_GUNVECT
|
||
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* REVEAL_CD - PROCESS TO PLACE A CD IN RELATION TO A *
|
||
* GIVEN OBJECT *
|
||
* A10 = [Y,X] SCREEN OFFSET *
|
||
* A11 = OFFSET FOR OZVAL *
|
||
* *
|
||
**************************************************************************
|
||
REVEAL_CD
|
||
MOVI CD_INIT,B0
|
||
JRUC REVEAL_POWERUP
|
||
|
||
**************************************************************************
|
||
* *
|
||
* REVEAL_CD - PROCESS TO PLACE A 2X SCALE CD IN RELATION TO A *
|
||
* GIVEN OBJECT *
|
||
* A10 = [Y,X] SCREEN OFFSET *
|
||
* A11 = OFFSET FOR OZVAL *
|
||
* *
|
||
**************************************************************************
|
||
REVEAL_CD2
|
||
MOVI CD2_INIT,B0
|
||
JRUC REVEAL_POWERUP
|
||
|
||
**************************************************************************
|
||
* *
|
||
* REVEAL_PROCK - PROCESS TO PLACE A ROCKET BOMB IN RELATION TO A *
|
||
* GIVEN OBJECT *
|
||
* A10 = [Y,X] SCREEN OFFSET *
|
||
* A11 = OFFSET FOR OZVAL *
|
||
* *
|
||
**************************************************************************
|
||
REVEAL_PROCK
|
||
MOVI PROCK_INIT,B0
|
||
JRUC REVEAL_POWERUP
|
||
|
||
**************************************************************************
|
||
* *
|
||
* REVEAL_LIFE *
|
||
* *
|
||
* Process to place an extra life powerup in relation to a *
|
||
* given object. *
|
||
* *
|
||
* A10 = [Y,X] screen offset *
|
||
* A11 = OZVAL offset from spawning object *
|
||
* *
|
||
**************************************************************************
|
||
REVEAL_LIFE
|
||
MOVI LIFE_INIT,B0
|
||
JRUC REVEAL_POWERUP
|
||
|
||
**************************************************************************
|
||
* *
|
||
* REVEAL_LIFE *
|
||
* *
|
||
* Process to place an 2X SCALE extra life powerup in relation to a *
|
||
* given object. *
|
||
* *
|
||
* A10 = [Y,X] screen offset *
|
||
* A11 = OZVAL offset from spawning object *
|
||
* *
|
||
**************************************************************************
|
||
REVEAL_LIFE2
|
||
MOVI LIFE2_INIT,B0
|
||
JRUC REVEAL_POWERUP
|
||
|
||
**************************************************************************
|
||
* *
|
||
* REVEAL_CLIP *
|
||
* *
|
||
* Process to place a clip powerup in relation to a *
|
||
* given object. *
|
||
* *
|
||
* A10 = [Y,X] screen offset *
|
||
* A11 = OZVAL offset from spawning object *
|
||
* *
|
||
**************************************************************************
|
||
REVEAL_CLIP
|
||
MOVI CLIP_INIT,B0
|
||
JRUC REVEAL_POWERUP
|
||
|
||
**************************************************************************
|
||
* *
|
||
* REVEAL_SHIELD *
|
||
* *
|
||
* Process to place a shield powerup in relation to a *
|
||
* given object *
|
||
* *
|
||
* A10 = [Y,X] screen offset *
|
||
* A11 = OZVAL offset from spawning object *
|
||
* *
|
||
**************************************************************************
|
||
REVEAL_SHIELD
|
||
MOVI SHIELD_INIT,B0
|
||
JRUC REVEAL_POWERUP
|
||
|
||
**************************************************************************
|
||
* *
|
||
* REVEAL_SHIELD2 *
|
||
* *
|
||
* Process to place a shield powerup in relation to a *
|
||
* given object, 2 scale. *
|
||
* *
|
||
* A10 = [Y,X] screen offset *
|
||
* A11 = OZVAL offset from spawning object *
|
||
* *
|
||
**************************************************************************
|
||
REVEAL_SHIELD2
|
||
MOVI SHIELD2_INIT,B0
|
||
JRUC REVEAL_POWERUP
|
||
|
||
**************************************************************************
|
||
* *
|
||
* REVEAL_SUPERGUN *
|
||
* *
|
||
* Process to place a SuperGun powerup in relation to a *
|
||
* given object *
|
||
* *
|
||
* A10 = [Y,X] screen offset *
|
||
* A11 = OZVAL offset from spawning object *
|
||
* *
|
||
**************************************************************************
|
||
REVEAL_SUPERGUN
|
||
MOVI SUPERGUN_INIT,B0
|
||
JRUC REVEAL_POWERUP
|
||
|
||
**************************************************************************
|
||
* *
|
||
* REVEAL_SUPERGUN2 *
|
||
* *
|
||
* Process to place a SuperGun powerup in relation to a *
|
||
* given object, 2 scale. *
|
||
* *
|
||
* A10 = [Y,X] screen offset *
|
||
* A11 = OZVAL offset from spawning object *
|
||
* *
|
||
**************************************************************************
|
||
REVEAL_SUPERGUN2
|
||
MOVI SUPERGUN2_INIT,B0
|
||
JRUC REVEAL_POWERUP
|
||
|
||
**************************************************************************
|
||
* *
|
||
* REVEAL_LAZER *
|
||
* *
|
||
* Process to place a Lazer disc powerup in relation to a *
|
||
* given object *
|
||
* *
|
||
* A10 = [Y,X] screen offset *
|
||
* A11 = OZVAL offset from spawning object *
|
||
* *
|
||
**************************************************************************
|
||
REVEAL_LAZER
|
||
MOVI LAZER_INIT,B0
|
||
JRUC REVEAL_POWERUP
|
||
|
||
**************************************************************************
|
||
* *
|
||
* REVEAL_LAZER2 *
|
||
* *
|
||
* Process to place a Lazer disc powerup in relation to a *
|
||
* given object, 2 scale. *
|
||
* *
|
||
* A10 = [Y,X] screen offset *
|
||
* A11 = OZVAL offset from spawning object *
|
||
* *
|
||
**************************************************************************
|
||
REVEAL_LAZER2
|
||
MOVI LAZER2_INIT,B0
|
||
JRUC REVEAL_POWERUP
|
||
|
||
*
|
||
*REVEAL_POWERUP - PROCESS TO MAKE A POWERUP APPEAR AT POINT ON SCREEN
|
||
*B0 = PTR TO CREATION TABLE
|
||
*A8 = IMG THIS IS COMING FROM
|
||
*A10 = [Y,X] SCREEN OFFSET FROM OBJECT ANIMATION POINT
|
||
*A11 = AMOUNT TO SUB TO OZVAL OF OBJECT FOR POWERUP
|
||
*
|
||
REVEAL_POWERUP
|
||
PUSH A8
|
||
CALLA MULTIMAKE
|
||
MOVE A8,A0
|
||
PULL A8 ;PULL MUST PRESERVE STATUS, DON'T USE PULLQ
|
||
JRZ OP_DIE
|
||
|
||
MOVIM POWERUP_FLASH_COLOR,*A0(OCONST),W
|
||
|
||
MOVE *A8(OXVAL),A1,L ;GET X POSITION
|
||
MOVE A10,A14
|
||
SEXT A14,W
|
||
SLL 15,A14 ;TRANSLATE OFFSET TO WORLD
|
||
move *a8(OCTRL),a4
|
||
btst B_FLIPH,a4
|
||
jrz RP_noflph
|
||
neg a14 ; compensate for flipped obj
|
||
RP_noflph:
|
||
ADD A14,A1 ;NEW X POSITION
|
||
|
||
MOVE *A8(OYVAL),A2,L ;GET Y POSITION
|
||
SRA 16,A10
|
||
SLL 15,A10 ;TRANSLATE OFFSET TO WORLD
|
||
btst B_FLIPV,a4 ; compensate for flipped obj
|
||
jrz RP_noflpv
|
||
neg a10
|
||
RP_noflpv:
|
||
ADD A10,A2 ;NEW Y POSITION
|
||
|
||
MOVE A0,A3
|
||
RP_PART_LUPE
|
||
MOVE A1,*A3(OXVAL),L
|
||
MOVE A2,*A3(OYVAL),L
|
||
MOVE *A3(OPARTS),A3,L
|
||
JRNZ RP_PART_LUPE
|
||
|
||
MOVE *A8(OZVAL),A1,L
|
||
SUB A11,A1 ;ADD Z OFFSET
|
||
MOVE A0,A8
|
||
CALLA STORE_ZVAL
|
||
|
||
MOVE A13,*A8(OPLINK),L
|
||
CALLA INSERT_OBJ
|
||
SLEEP 10 ;GIVE IT TIME OUT
|
||
JRUC OP_G
|
||
|
||
*
|
||
*OUTPUT_POWERUP - PROCESS TO FLIP A POWERUP OUT ON THE PLAYFIELD
|
||
*B0 = PTR TO CREATION TABLE
|
||
*
|
||
***********************************************************************
|
||
*NOTE: A11 MUST REMAIN 0 DURING THE ROUTINE OUTPUT_POWERUP, IT WILL *
|
||
* EVENTUALLY BECOME THE ELAPSED FLIGHT TIME TO THE PLAYER *
|
||
* SCORE AREA. *
|
||
***********************************************************************
|
||
OUTPUT_POWERUP
|
||
CALLA MULTIMAKE
|
||
JRZ OP_DIE
|
||
|
||
MOVIM POWERUP_FLASH_COLOR,*A8(OCONST),W
|
||
|
||
MOVE A13,*A8(OPLINK),L
|
||
|
||
|
||
CALLA SetOnGrnd ;OPLANE, OSIZEY -> sets OYPOS
|
||
move *A8(OYPOS),A14,W
|
||
SUBI 18H,A14
|
||
move A14,*A8(OYPOS),W
|
||
|
||
MOVI 10,A1
|
||
MOVI SCREEN_WIDTH-10,A0
|
||
CALLA RANGRAND
|
||
MOVE A0,A3
|
||
MOVI ZMAX,A1
|
||
CALLA STORE_ZVAL
|
||
; TOWORLDX A1,A3
|
||
MOVE A3,*A8(OXVAL),L
|
||
|
||
|
||
CALLA INSERT_OBJ
|
||
|
||
OP_G
|
||
MOVE A8,A11
|
||
MOVI POWERUP_GUNVECT,A14
|
||
OP_GV_LP
|
||
MOVE A14,*A8(OGUNVECT),L
|
||
MOVE *A8(OPARTS),A8,L ;GUN VECTOR GOES TO ALL PARTS
|
||
JRNZ OP_GV_LP
|
||
MOVE A11,A8
|
||
OP_G_FLT:
|
||
CLR A11 ;HOLD FLIGHT TIME HERE
|
||
MOVE @POWERUP_DURATION,A10,W ;GET THE NORMAL TIME
|
||
CLR A9
|
||
POWERUP_TIMEOUT
|
||
CMPI 160,A10 ;ARE WE IN FLASH RANGE?
|
||
JRLS PT_FLASH ;BR = YES
|
||
SUBK 5,A10
|
||
JRLE PT_DONE
|
||
SLOOP 5,POWERUP_TIMEOUT
|
||
|
||
PT_FLASH
|
||
MOVE *A8(OFLAGS),A14,W
|
||
BTST B_ANIM,A14
|
||
JRNZ PT_SLEEP ;BR = Animating, do not flash
|
||
MOVE A9,A9
|
||
JRZ PT_OFF
|
||
CLR A9
|
||
CALLA OBJ_CONST
|
||
JRUC PT_SLEEP
|
||
PT_OFF
|
||
MOVK 1,A9
|
||
|
||
CALLA OBJ_WNZ
|
||
|
||
PT_SLEEP
|
||
; MOVE A10,A14
|
||
; SRL 3,A14
|
||
; CMPK 4,A14
|
||
; JRHI PT_OK
|
||
; MOVI 4,A14
|
||
;PT_OK
|
||
; SUB A14,A10
|
||
; SLOOPR A14,POWERUP_TIMEOUT
|
||
SUBK 4,A10
|
||
SLOOP 4,POWERUP_TIMEOUT
|
||
PT_DONE
|
||
CALLA OBJ_WNZ
|
||
SLEEP 20
|
||
MOVE *A8(OID),A14,W
|
||
CMPI OID_WINGS,A14
|
||
JRNE PT_DEL ;BR = Not deleting the wings
|
||
SOUND1 SND_STUPID
|
||
PT_DEL
|
||
CALLA DELETE_OBJ
|
||
OP_DIE
|
||
DIE
|
||
|
||
*
|
||
* Call the guy stupid for not picking up the wings
|
||
*
|
||
SND_STUPID
|
||
.WORD 0F1E0H,213,0A875H,0 ;Sound for missing the wings
|
||
|
||
**************************************************************************
|
||
* *
|
||
* POWERUP_GUNVECT - SERVICE ROUTINE FOR GUN COLLISION. *
|
||
* A2 = PTR TO PLAYER SHOOTING THIS POWERUP *
|
||
* A8 = PTR TO POWERUP OBJECT *
|
||
* *
|
||
**************************************************************************
|
||
POWERUP_GUNVECT
|
||
MMTM SP,A0,A1,A7,A8,A10,A11
|
||
CALLA GET_HEAD_PART
|
||
|
||
MOVE *A8(OID),A0,W
|
||
CMPI OID_SBOMB,A0 ;SMART BOMBS DON'T FLY!
|
||
JRNE PGV_FLYBOY ;IF THEY HAD WINGS THEY WOULD
|
||
*BLOW THE SMART BOMB
|
||
CALLA OBJPROC_KILL
|
||
CALLA DELETE_OBJ
|
||
CALLR SBOMB_AWARD
|
||
JRUC PGV_X
|
||
|
||
PGV_FLYBOY
|
||
CALLA OBJ_WNZ
|
||
|
||
MOVE *A8(OPLINK),A0,L
|
||
JRZ PGV_X
|
||
|
||
CALLA GETA11 ;GET REMAINING FLIGHT TIME
|
||
JRZ PGV_LOAD_NEW ;BR = NOT IN FLIGHT YET
|
||
|
||
CALLA GETA10
|
||
CMP A2,A10 ;FLYING TO WHICH PLAYER?
|
||
JREQ PGV_X ;BR = SAME, NO ACTION
|
||
|
||
CMPI POWERUP_FLY_TIME/4,A11
|
||
JRLO PGV_SEND_PLAYER
|
||
|
||
MOVE A0,A7
|
||
SOUND1 POWERUP_STEAL_SND ;TELL EVERYONE IT GOT STOLEN
|
||
MOVE A7,A0
|
||
JRUC PGV_SEND_PLAYER
|
||
|
||
PGV_LOAD_NEW
|
||
MOVK 1,A11
|
||
CALLA PUTA11 ;SET THE IN FLIGHT FLAG
|
||
|
||
PGV_SEND_PLAYER
|
||
MOVE A2,A10 ;PASS THIS NEW PLAYER
|
||
CALLA PUTA10
|
||
|
||
MOVE *A8(OID),A14,W
|
||
ANDI MASK_ID,A14
|
||
; SLL 28,A14
|
||
; SRL 28,A14
|
||
CMPI ID_LIFE,A14 ;IS THIS A LIFE ICON?
|
||
JRNE PGV_GO_PROC ;BR = NO
|
||
|
||
MOVI POWERUP_FLY_TIME,A7
|
||
SUB A11,A7
|
||
JRGT PGV_ADD_INV
|
||
MOVK 1,A7 ;MAKE SURE THERE'S A LITTLE TIME
|
||
PGV_ADD_INV
|
||
ADDK 2,A7 ;ADD A COUPLE FOR INSURANCE
|
||
MOVE *A2(PINVINCIBLE),A14,W
|
||
CMP A7,A14
|
||
JRGE PGV_GO_PROC
|
||
MOVE A7,*A2(PINVINCIBLE),W
|
||
; ADDRM A7,*A2(PINVINCIBLE),W ;MAKE HIM INVINCIBLE FOR FLIGHT
|
||
|
||
PGV_GO_PROC
|
||
MOVI POWERUP_FLY,A7
|
||
CALLA PUTWAKE
|
||
|
||
ORIM M_WAVEWAIT,*A0(PROCID),W
|
||
|
||
SOUND1 POWERUP_HIT_SND ;LET'S MAKE SOME NOISE
|
||
|
||
; MOVE *A8(OPARTS),A0,L
|
||
; JRZ PGV_NO_HALO
|
||
; CALLA CKPULLANIM ;STOP IT FROM ANIMATING
|
||
; CALLA OBJOFF ;AND MAKE SURE IT IS OFF
|
||
;PGV_NO_HALO
|
||
|
||
PGV_X
|
||
MMFM SP,A0,A1,A7,A8,A10,A11
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* POWER_GROUND_COLL - COLLISION VECTOR FOR GROUND COLLISION. *
|
||
* A8 = PTR TO POWERUP *
|
||
* *
|
||
**************************************************************************
|
||
POWER_GROUND_COLL
|
||
MOVE *A8(OYVEL),A14,L
|
||
JRN PGC_DONE
|
||
JRZ PGC_DONE
|
||
SRA 2,A14
|
||
CMPI [1,0],A14
|
||
JRLT PGC_DONE
|
||
NEG A14
|
||
MOVE A14,*A8(OYVEL),L
|
||
RETS
|
||
PGC_DONE
|
||
ANDNIM M_GCOLL,*A8(OFLAGS),W
|
||
JAUC CLR_VEL
|
||
|
||
*
|
||
*SOUND FOR HITTING A POWERUP WITH A BULLET
|
||
*
|
||
POWERUP_HIT_SND
|
||
.WORD 0F341H,47,0A40EH,0
|
||
|
||
*
|
||
*SOUND FOR STEALING A POWER UP
|
||
*
|
||
POWERUP_STEAL_SND
|
||
.WORD 0F241H,48,0A410H,0
|
||
|
||
*
|
||
*BASE FLIGHT TIME(IN TICKS) TO GET TO THE PLAYERS SCORE AREA
|
||
*
|
||
POWERUP_FLY_TIME EQU 45
|
||
**************************************************************************
|
||
* *
|
||
* POWERUP_FLY - PROCESS TO SEND A POWERUP TO A PLAYERS SCORE AREA. *
|
||
* A11 WILL ALWAYS BE THE # OF TICKS THAT HAVE ELAPSED *
|
||
* SINCE STARTING TOWARDS THAT AREA. *
|
||
* A8 = PTR POWERUP OBJECT *
|
||
* A10 = PTR TO PLAYERS AREA TO WHICH WE ARE TRAVELING *
|
||
* A11 = ELAPSED TICKS *
|
||
* *
|
||
**************************************************************************
|
||
POWERUP_FLY
|
||
ORIM M_WAVEWAIT,*A13(PROCID),W
|
||
CALLA PSTOP
|
||
PF_UPDATE_LOOP
|
||
; MOVI PBOXSIZ,A0
|
||
; HALFXY A0 ;FLY TO THE CENTER 'O THE PLAYER BOX
|
||
|
||
MOVI PBOXPOWER,A0 ;Get the offset for fly target
|
||
MOVE *A10(PSCRAD),A1,L
|
||
ADDXY A0,A1 ;Offset for collecting player
|
||
|
||
MOVE A1,A3 ;Isolate screen coords
|
||
SEXT A1,W
|
||
SRA 16,A3
|
||
|
||
MOVE @ZBASE,A5,L
|
||
ADDI ZMAX_REAL,A5
|
||
|
||
STOUXY A5,A1,A3 ;Convert screen target to universe
|
||
|
||
; MOVE A1,A3 ;SETUP OF SLINEVEL_LOAD_3D
|
||
; SEXT A1,W
|
||
; SUBI HALFX,A1
|
||
; SLL 15,A1
|
||
; MOVE @XBASE,A14,L
|
||
; ADD A14,A1 ;ADD XBASE
|
||
; SRA 16,A3
|
||
; MOVE @YHALF,A14,W
|
||
; SUB A14,A3
|
||
; SLL 15,A3
|
||
; MOVE @YBASE,A14,L
|
||
; SUB A14,A3 ;ADD YBASE
|
||
|
||
; MOVE @ZBASE,A5,L
|
||
; ADDI 08000H,A5 ;ADD TO ZBASE
|
||
|
||
MOVE *A8(OXVAL),A2,L ;Get everything setup for SLINEVEL
|
||
MOVE *A8(OYVAL),A4,L
|
||
MOVE *A8(OZVAL),A6,L
|
||
|
||
PF_SKIPSR
|
||
MOVI POWERUP_FLY_TIME,A7
|
||
SUB A11,A7 ;IT WILL TAKE THIS AMOUNT OF TICKS
|
||
JRLE PF_SCORE ;BR = THERE ALREADY
|
||
|
||
; CALLA SLINEVEL_LOAD_3D ;GET THE VELOCITIES
|
||
CALLA SLINEVEL_3D ;GET THE VELOCITIES
|
||
|
||
MOVI XSCROLL,A14
|
||
MMFM A14,A2,A4,A6
|
||
sra ZFRAC,a2 ; compensate for new fraction
|
||
ADD A6,A1 ;COMPENSATE FOR XSCROLL
|
||
SUB A4,A3 ; YSCROLL
|
||
ADD A2,A5 ; ZSCROLL
|
||
move a1,*a8(OXVEL),L
|
||
move a3,*a8(OYVEL),L
|
||
move a5,*a8(OZVEL),L
|
||
|
||
PF_LP
|
||
SLEEP 3
|
||
ADDK 3,A11
|
||
; CALLA SCRTST ;CHECK FOR OFF SCREEN
|
||
; JREQ PF_LP
|
||
MOVB *A8(OFLAGS),A14
|
||
JRNN PF_UPDATE_LOOP
|
||
PF_SCORE
|
||
MOVE *A8(OID),A0,W ;JUMP TO AWARD ROUTINE BASED ON OID
|
||
CALLA DELETE_OBJ
|
||
SLL 25,A0
|
||
SRL 27,A0
|
||
SLL 5,A0
|
||
ADDI POWERUP_AWARD_TAB,A0
|
||
MOVE *A0,A0,L
|
||
MOVE A10,A2
|
||
; MOVK NUM_BOMB,A1
|
||
CALL A0
|
||
DIE
|
||
|
||
**************************************************************************
|
||
* *
|
||
* POWERUP AWARD ROUTINES *
|
||
* *
|
||
**************************************************************************
|
||
*
|
||
*TABLE OF ROUTINES TO CALL TO AWARD A POWERUP
|
||
*
|
||
POWERUP_AWARD_TAB
|
||
.LONG LIFE_AWARD,SBOMB_AWARD,PROCK_AWARD,CD_AWARD,JEWEL_AWARD
|
||
.LONG CLIP_AWARD,WINGS_AWARD,SHIELD_AWARD,SUPERGUN_AWARD
|
||
.LONG LAZER_AWARD,CD_AWARD,BOOBY_PRIZE_AWARD
|
||
|
||
**************************************************************************
|
||
* *
|
||
* BOOBY_PRIZE_AWARD - AWARD MAMMERY BOOBY PRIZE. *
|
||
* A2 = PTR TO PLAYER *
|
||
* *
|
||
**************************************************************************
|
||
BOOBY_PRIZE_AWARD
|
||
PUSH A0
|
||
|
||
INCM *A2(PMAMMY),W
|
||
|
||
SOUND1 SND_MORPH
|
||
|
||
PULLQ A0
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* LIFE_AWARD - AWARD EXTRA LIFE. *
|
||
* A2 = PTR TO PLAYER *
|
||
* *
|
||
**************************************************************************
|
||
LIFE_AWARD
|
||
MMTM SP,A0,A1
|
||
|
||
INCM @ENERGY_AWARDS,W
|
||
|
||
ADJUST ADJENERGY ;Get amount of energy bar from CMOS
|
||
SLL 15,A0 ;Add half for POWER drink
|
||
CMPI [50,0],A0
|
||
JRLE LA_NRG_OK ;BR = Added life is in range
|
||
|
||
MOVI [50,0],A0 ;This is the max to give
|
||
|
||
LA_NRG_OK
|
||
CALLA ADDNLIFE
|
||
|
||
SOUND1 SND_EXTRA_ENERGY
|
||
|
||
MOVI ENERGY_TAB_3P,A0
|
||
MOVI ENERGY_TAB_2P,A1
|
||
CALLR DO_HEADS_UP
|
||
|
||
MMFM SP,A0,A1
|
||
RETS
|
||
|
||
*
|
||
*SOUND TO MAKE WHEN GIVING ADDED ENERGY
|
||
*
|
||
SND_EXTRA_ENERGY
|
||
.WORD 0F1E0H,180,0A55AH,98,0A85AH,0 ;Sound for more life
|
||
|
||
**************************************************************************
|
||
* *
|
||
* PROCK_AWARD - AWARD ANOTHER ROCKET BOMB TO THE PLAYER. *
|
||
* A2 = PTR TO PLAYER *
|
||
* *
|
||
**************************************************************************
|
||
PROCK_AWARD
|
||
MMTM SP,A0,A1
|
||
|
||
MOVE *A2(PBOMB1),A1,W
|
||
JRNZ PA_NO_LED_ON
|
||
CALLA P_LED_ON
|
||
PA_NO_LED_ON
|
||
ADDK 3,A1
|
||
MOVE A1,*A2(PBOMB1),W
|
||
|
||
; ADDKM 3,*A2(PBOMB1),W ;Little guys give one
|
||
|
||
CALLA OUT_BOMBS
|
||
|
||
; SOUND1 PROCK_SND
|
||
MOVE *A2(PPOWERHEADS),A14,W ;ALREADY SEEN THIS?
|
||
ANDI M_PROCK,A14
|
||
JRZ PA_BIG_HEAD
|
||
|
||
MOVI SM_PROCK_TAB_3P,A0
|
||
MOVI SM_PROCK_TAB_2P,A1
|
||
CALLR DO_HEADS_UP
|
||
JRUC PA_X
|
||
|
||
PA_BIG_HEAD
|
||
MOVI PROCK_TAB_3P,A0
|
||
MOVI PROCK_TAB_2P,A1
|
||
CALLR DO_HEADS_UP
|
||
JRZ PA_X
|
||
|
||
ORIM M_PROCK,*A2(PPOWERHEADS),W
|
||
|
||
PA_X
|
||
MMFM SP,A0,A1
|
||
RETS
|
||
|
||
*
|
||
*SOUND TO MAKE WHEN AWARDING ANOTHER ROCKET BOMB
|
||
*
|
||
PROCK_SND
|
||
.WORD 0F2D0H,040H,0808CH,0
|
||
|
||
**************************************************************************
|
||
* *
|
||
* CD_AWARD - AWARD ANOTHER CD TO THE PLAYER. *
|
||
* A2 = PTR TO PLAYER *
|
||
* *
|
||
**************************************************************************
|
||
CD_AWARD
|
||
MMTM SP,A0,A1
|
||
|
||
MOVE *A2(PBOMB1),A1,W
|
||
JRNZ CDA_NO_LED_ON
|
||
CALLA P_LED_ON
|
||
CDA_NO_LED_ON
|
||
ADDK 10,A1
|
||
MOVE A1,*A2(PBOMB1),W
|
||
|
||
; ADDKM 10,*A2(PBOMB1),W ;ADD SOME MORE
|
||
|
||
CALLA OUT_BOMBS
|
||
|
||
MOVE *A2(PPOWERHEADS),A14,W ;ALREADY SEEN THIS?
|
||
ANDI M_CD,A14
|
||
JRZ CDA_BIG_HEAD
|
||
|
||
MOVI SM_PCD_TAB_3P,A0
|
||
MOVI SM_PCD_TAB_2P,A1
|
||
CALLR DO_HEADS_UP
|
||
JRUC CDA_X
|
||
|
||
CDA_BIG_HEAD
|
||
MOVI PCD_TAB_3P,A0
|
||
MOVI PCD_TAB_2P,A1
|
||
CALLR DO_HEADS_UP
|
||
JRZ CDA_X
|
||
|
||
ORIM M_CD,*A2(PPOWERHEADS),W
|
||
|
||
CDA_X
|
||
MMFM SP,A0,A1
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* CLIP_AWARD *
|
||
* *
|
||
* Award another clip to the player. *
|
||
* *
|
||
* A2 = Ptr to player *
|
||
* *
|
||
**************************************************************************
|
||
CLIP_AWARD
|
||
PUSH A0
|
||
CALLA GUNPOWER_TO_MAX
|
||
|
||
ADDKM 1,*A2(PCLIPS),W ;Add another one
|
||
|
||
* Need sound and number update
|
||
|
||
PULLQ A0
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* SHIELD_AWARD *
|
||
* *
|
||
* Award some shield to the player. *
|
||
* *
|
||
* A2 = Ptr to player *
|
||
* *
|
||
**************************************************************************
|
||
SHIELD_AWARD
|
||
PUSH A0
|
||
INCM @SHIELD_AWARDS,W
|
||
SOUND1 SND_SHIELD
|
||
|
||
MOVI [30,0],A14
|
||
MOVE A14,*A2(PSHIELD),L
|
||
|
||
CALLA PLAYER_SHIELD
|
||
|
||
PULLQ A0
|
||
RETS
|
||
|
||
*
|
||
* SOUND TO MAKE WHEN AWARDING A SHIELD
|
||
*
|
||
SND_SHIELD
|
||
; .WORD 0F1E0H,132,0A55DH,0 ;Sound for shield
|
||
.WORD 0F1E0H,92,0A845H,0 ;Sound for shield
|
||
|
||
**************************************************************************
|
||
* *
|
||
* SUPERGUN_AWARD *
|
||
* *
|
||
* Award a SuperGun to the player. *
|
||
* *
|
||
* A2 = Ptr to player *
|
||
* *
|
||
**************************************************************************
|
||
SUPERGUN_AWARD
|
||
MMTM SP,A0,A1
|
||
|
||
INCM @SUPERGUN_AWARDS,W
|
||
|
||
SOUND1 SND_SUPERGUN
|
||
|
||
MOVIM 200,*A2(PPLASMASHOTS),W
|
||
|
||
MOVI SUPERGUN_TAB_3P,A0
|
||
MOVI SUPERGUN_TAB_2P,A1
|
||
CALLR DO_HEADS_UP
|
||
|
||
MMFM SP,A0,A1
|
||
RETS
|
||
|
||
SND_SUPERGUN
|
||
.WORD 0F1E0H,120,0A519H,67,0A857H,0 ;Sound for SuperGun
|
||
|
||
**************************************************************************
|
||
* *
|
||
* LAZER_AWARD *
|
||
* *
|
||
* Award a Lazer disc to the player. *
|
||
* *
|
||
* A2 = Ptr to player *
|
||
* *
|
||
**************************************************************************
|
||
LAZER_AWARD
|
||
MMTM SP,A0,A1
|
||
|
||
INCM @LAZER_AWARDS,W
|
||
|
||
SOUND1 SND_LAZER
|
||
|
||
MOVIM 25,*A2(PBOMB2),W
|
||
|
||
CALLA P_LED_ON
|
||
|
||
; ADDIM 5,*A2(PBOMB2),W
|
||
|
||
MOVI LAZER_TAB_3P,A0
|
||
MOVI LAZER_TAB_2P,A1
|
||
CALLR DO_HEADS_UP
|
||
|
||
MMFM SP,A0,A1
|
||
RETS
|
||
|
||
SND_LAZER
|
||
.WORD 0F1E0H,52,0A848H,0 ;Sound for Lazer disc
|
||
|
||
**************************************************************************
|
||
* *
|
||
* SBOMB_AWARD - AWARD A SMART BOMB TO THE PLAYER. *
|
||
* A2 = PTR TO PLAYER *
|
||
* *
|
||
**************************************************************************
|
||
SBOMB_AWARD
|
||
MMTM SP,A0,A1,A7,A11
|
||
MOVE A2,A11
|
||
CREATE PID_IND,SBOMB_SHOCK_WAVE
|
||
MOVIM 120,@DISPATCH_DELAY,W
|
||
MOVKM 1,@HOLD_ENEMY_DISPATCH,W
|
||
MMFM SP,A0,A1,A7,A11
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* PROC_DELAYED_SBOMB *
|
||
* *
|
||
* Process to do a delayed SBOMB effect. *
|
||
* *
|
||
* A10 = Delay time *
|
||
* A11 = Ptr to player triggering *
|
||
* *
|
||
**************************************************************************
|
||
PROC_DELAYED_SBOMB
|
||
SLEEPR A10
|
||
MOVIM 120,@DISPATCH_DELAY,W
|
||
MOVKM 1,@HOLD_ENEMY_DISPATCH,W
|
||
JRUC SBOMB_SHOCK_WAVE
|
||
|
||
SSW_PRIORITY .EQU 0FFH ;PRIORITY OF THE SMART BOMB RECON EFFECT
|
||
**************************************************************************
|
||
* *
|
||
* SBOMB_SHOCK_WAVE - PROCESS TO HANDLE SHOCK OF A SMART BOMB. *
|
||
* A11 = PTR TO PLAYER SMART BOMBING *
|
||
* *
|
||
**************************************************************************
|
||
SBOMB_SHOCK_WAVE
|
||
SOUND1 SND_SBOMB_EXP3
|
||
; calla DOBIGSHAKE
|
||
MOVIM 07FFFH,@IRQSKYE,W
|
||
MOVIM 07FFFH,@IRQGNDE,W
|
||
|
||
* Switch in palette based on player that shot smart bomb
|
||
|
||
MOVE A11,A2
|
||
CALLA GPLAYNUM
|
||
|
||
MOVE @NPLAYERS,A14,W
|
||
DEC A14
|
||
JRNZ SSW_3P ;BR = 3 player model
|
||
MOVI TAB_SBOMB_COLORS_2P,A1
|
||
JRUC SSW_CHANGE_PAL
|
||
SSW_3P
|
||
MOVI TAB_SBOMB_COLORS_3P,A1
|
||
SSW_CHANGE_PAL
|
||
SLL 5,A0
|
||
ADD A0,A1
|
||
MOVE *A1,A0,L
|
||
MOVE *A0+,A2,W ;Grab the color count
|
||
MOVI 6400H,A1 ;This is where the colors go
|
||
CALLA PALSET
|
||
|
||
SLEEP 1
|
||
SOUND1 SND_SBOMB_EXP2
|
||
SLEEP 1
|
||
SOUND1 SND_SBOMB_EXP2
|
||
MOVE @SKYCOLOR,@IRQSKYE,W
|
||
MOVE @GROUNDCOLOR,@IRQGNDE,W
|
||
MOVE A11,A2
|
||
CALLR SCAN_FOR_SBOMB ;YIKES!
|
||
MOVE B2,A10
|
||
; MOVKM 1,@HOLD_ENEMY_DISPATCH,W
|
||
; MOVE @WAVE,A14,W
|
||
;SSW_FUTURE
|
||
SLEEP 2
|
||
|
||
MOVIM 07FFFH,@IRQSKYE,W
|
||
MOVIM 07FFFH,@IRQGNDE,W
|
||
MOVKM 1,@SUPRESS_PAGE_FLIP,W ;Shut down all writes to DPYST
|
||
MOVIM DPYSTRT2,@DPYST,L ;Rock on to FREAK frame
|
||
|
||
SLEEP 3
|
||
|
||
MOVE @SKYCOLOR,@IRQSKYE,W
|
||
MOVE @GROUNDCOLOR,@IRQGNDE,W
|
||
CLRM @SUPRESS_PAGE_FLIP,W ;Restore writes to DPYST
|
||
|
||
SLEEP 2
|
||
|
||
MOVIM 07FFFH,@IRQSKYE,W
|
||
MOVIM 07FFFH,@IRQGNDE,W
|
||
MOVKM 1,@SUPRESS_PAGE_FLIP,W ;Shut down all writes to DPYST
|
||
MOVIM DPYSTRT2,@DPYST,L ;Rock on to FREAK frame
|
||
|
||
SLEEP 3
|
||
|
||
MOVE @SKYCOLOR,@IRQSKYE,W
|
||
MOVE @GROUNDCOLOR,@IRQGNDE,W
|
||
CLRM @SUPRESS_PAGE_FLIP,W ;Restore writes to DPYST
|
||
|
||
SLEEP 2
|
||
; calla DOSMALLSHAKE
|
||
|
||
MOVIM 07FFFH,@IRQSKYE,W
|
||
MOVIM 07FFFH,@IRQGNDE,W
|
||
MOVKM 1,@SUPRESS_PAGE_FLIP,W ;Shut down all writes to DPYST
|
||
MOVIM DPYSTRT2,@DPYST,L ;Rock on to FREAK frame
|
||
|
||
SLEEP 3
|
||
|
||
MOVE @SKYCOLOR,@IRQSKYE,W
|
||
MOVE @GROUNDCOLOR,@IRQGNDE,W
|
||
CLRM @SUPRESS_PAGE_FLIP,W ;Restore writes to DPYST
|
||
|
||
SLEEP 2
|
||
|
||
MOVIM 07FFFH,@IRQSKYE,W
|
||
MOVIM 07FFFH,@IRQGNDE,W
|
||
MOVKM 1,@SUPRESS_PAGE_FLIP,W ;Shut down all writes to DPYST
|
||
MOVIM DPYSTRT2,@DPYST,L ;Rock on to FREAK frame
|
||
|
||
SLEEP 3
|
||
|
||
MOVE @SKYCOLOR,@IRQSKYE,W
|
||
MOVE @GROUNDCOLOR,@IRQGNDE,W
|
||
CLRM @SUPRESS_PAGE_FLIP,W ;Restore writes to DPYST
|
||
|
||
SLEEP 2
|
||
|
||
MOVIM 07FFFH,@IRQSKYE,W
|
||
MOVIM 07FFFH,@IRQGNDE,W
|
||
MOVKM 1,@SUPRESS_PAGE_FLIP,W ;Shut down all writes to DPYST
|
||
MOVIM DPYSTRT2,@DPYST,L ;Rock on to FREAK frame
|
||
|
||
SLEEP 3
|
||
|
||
MOVE @SKYCOLOR,@IRQSKYE,W
|
||
MOVE @GROUNDCOLOR,@IRQGNDE,W
|
||
CLRM @SUPRESS_PAGE_FLIP,W ;Restore writes to DPYST
|
||
|
||
SLEEP 2
|
||
|
||
MOVIM 07FFFH,@IRQSKYE,W
|
||
MOVIM 07FFFH,@IRQGNDE,W
|
||
MOVKM 1,@SUPRESS_PAGE_FLIP,W ;Shut down all writes to DPYST
|
||
MOVIM DPYSTRT2,@DPYST,L ;Rock on to FREAK frame
|
||
|
||
SLEEP 3
|
||
|
||
MOVE @SKYCOLOR,@IRQSKYE,W
|
||
MOVE @GROUNDCOLOR,@IRQGNDE,W
|
||
CLRM @SUPRESS_PAGE_FLIP,W ;Restore writes to DPYST
|
||
|
||
; SLEEP 2
|
||
SLEEP 50
|
||
MOVE A10,A10 ;We're 0 enemies killed?
|
||
JRNZ SBOMB_KILLED_SOME ;BR = No
|
||
SOUND1 SND_SBOMB_BOOBY ;Do this sound when no enemies wasted
|
||
JRUC SBOMB_ON_WITH_IT
|
||
SBOMB_KILLED_SOME
|
||
; CMPK 8,A10 ;We're a shitload of enemies killed?
|
||
; JRLO SBOMB_NORMAL_RESPONSE ;BR = No
|
||
; SOUND1 SND_SBOMB_1ST_PRIZE ;Do this for total carnage
|
||
; JRUC SBOMB_ON_WITH_IT
|
||
;SBOMB_NORMAL_RESPONSE
|
||
ADJUST ADJPROFANITY
|
||
JRNZ SBOMB_NORM_SOUND
|
||
|
||
RANDENT TAB_SBOMB_SNDS_G,NUM_SBOMB_SNDS-1,5,L
|
||
JRUC SBOMB_ACK_SOUND
|
||
|
||
SBOMB_NORM_SOUND
|
||
RANDENT TAB_SBOMB_SNDS,NUM_SBOMB_SNDS,5,L
|
||
SBOMB_ACK_SOUND
|
||
CALLA ONESND ;Normal Smart bomb sound gig
|
||
SBOMB_ON_WITH_IT
|
||
SLEEP 50
|
||
; CLRM @HOLD_ENEMY_DISPATCH,W
|
||
MOVE @GAME_STATE,A14,W
|
||
CMPI INPLAY,A14
|
||
JANE SUCIDE
|
||
|
||
MOVE *A11(POBJ),A14,L ;DID THIS GUY DIE?
|
||
JAZ SUCIDE ;BR = YES, NO MORE STUFF
|
||
|
||
MOVI SSW_PRIORITY,A0
|
||
MOVI 130,A1
|
||
JSRP START_HUP_WAIT
|
||
|
||
MOVE A11,A2
|
||
MOVE A10,@RAMTEMP1,W ;STORE COUNT
|
||
*SELECT CORRECT SUFFIX FOR THE JOB
|
||
CMPI 1,A10
|
||
JRNE SSW_S
|
||
MOVIM SUFFIX_NULL,@RAMTEMP2,L
|
||
JRUC SSW_MORE
|
||
SSW_S
|
||
MOVIM SUFFIX_S,@RAMTEMP2,L
|
||
SSW_MORE
|
||
MOVI 10000,A9
|
||
MPYU A10,A9 ;CALCULATE THE BONUS POINT SITUATION
|
||
MOVE A9,@RAMTEMP3,L
|
||
MMTM A12,A9,A11
|
||
|
||
CALLR SET_PLAYER_COLOR
|
||
SRL 16,A5
|
||
MOVE A5,@RAMTEMP4,W
|
||
|
||
; MOVI SBOMB_RECON_MESS,A8
|
||
; CALLA LM_SETUP
|
||
; CALLR CENTER_PLAYER_TEXT ;CORRECT POSITION
|
||
; CALLR SET_PLAYER_TOID ;CORRECT OID
|
||
; MOVK 1,A0
|
||
; JSRP PRINTF
|
||
MMFM A12,A9,A11
|
||
MOVE A11,A2
|
||
MOVE *A2(POBJ),A14,L ;DID THE PLAYER DIE?
|
||
JRZ SSW_CLRIT ;BR = YES
|
||
SLEEP 60
|
||
MOVE A11,A2
|
||
MOVE A9,A1
|
||
CALLA SCORE ;AWARD THE BONUS
|
||
SSW_CLRIT
|
||
CALLR CLR_PLAYER_TEXT ;CLEAR JUST THIS PLAYERS TEXT
|
||
|
||
DIE
|
||
|
||
**************************************************************************
|
||
* *
|
||
* INIT_SBOMB_PAGE *
|
||
* *
|
||
* Initialize the video page for the Smart Bomb effect *
|
||
* *
|
||
* Call with JSRP *
|
||
* *
|
||
**************************************************************************
|
||
INIT_SBOMB_PAGE
|
||
; MOVI 0B0B0B0BH,A0
|
||
CLR A0
|
||
CALLA FILL_PAGE2
|
||
MOVI GXBOOM,A8 ;Let's setup the gnarly still
|
||
CLR A9 ;Starting point of picture
|
||
MOVI PAGE2_START,A10 ;Put it on this page
|
||
CLR A11 ;No fade
|
||
JAUC STILL ;Decompress that beeeaahtch
|
||
|
||
**************************************************************************
|
||
* *
|
||
* CENTER_PLAYER_TEXT - RETURN THE VALUE THAT IS THE CENTER X OF THE *
|
||
* PLAYERS HIT AREA. *
|
||
* A2 = PTR TO PLAYER DATA AREA *
|
||
* A9 = [Y,X] TEXT LOCATION *
|
||
* RETURNS *
|
||
* A9 X PART = SCREEN RELATIVE PLAYER CENTER X *
|
||
* NOTE: A9 Y PART IS KEPT INTACT *
|
||
* *
|
||
**************************************************************************
|
||
CENTER_PLAYER_TEXT
|
||
PUSH A0
|
||
MOVE *A2(PHITBOXLR),A0,L
|
||
MOVE *A2(PHITBOXUL),A14,L
|
||
SUBXY A14,A0
|
||
ZEXT A0
|
||
SRL 1,A0
|
||
ADDXY A0,A14
|
||
MOVX A14,A9 ;CENTER IN THE PLAYERS BOX
|
||
PULLQ A0
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* SET_PLAYER_COLOR - SET THE COLOR OF A STRING TO MATCH THAT OF *
|
||
* THE PLAYER ASSOCIATED WITH IT. *
|
||
* A2 = PTR TO PLAYER *
|
||
* A5 = STRING [COLOR,PALETTE] *
|
||
* RETURNS *
|
||
* A5 = STRING [COLOR,PALETTE] FOR THIS PLAYER *
|
||
* *
|
||
**************************************************************************
|
||
SET_PLAYER_COLOR
|
||
PUSH A0
|
||
CALLA GPLAYNUM
|
||
SLL 5,A0
|
||
ADDI PLAYER_COLOR_TAB,A0
|
||
MOVE *A0,A5,L
|
||
PULLQ A0
|
||
RETS
|
||
PLAYER_COLOR_TAB
|
||
.LONG COLOR_PBLUE,COLOR_PRED
|
||
|
||
**************************************************************************
|
||
* *
|
||
* SET_PLAYER_TOID - SET THE OID OF THIS STRING TO THAT OF A PLAYER TYPE *
|
||
* TEXT. *
|
||
* A2 = PTR TO PLAYER *
|
||
* B1 = [SND INDX, OID] *
|
||
* RETURNS *
|
||
* B1 = SND INDX, PLAYER TEXT OID] *
|
||
* *
|
||
**************************************************************************
|
||
SET_PLAYER_TOID
|
||
PUSH A0
|
||
CALLA GPLAYNUM
|
||
SLL 4,A0
|
||
ADDI PLAYER_TOID_TAB,A0
|
||
MOVE *A0,A14,W
|
||
MOVE A14,B14
|
||
MOVX B14,B1
|
||
PULLQ A0
|
||
RETS
|
||
PLAYER_TOID_TAB
|
||
.LONG OID_P1TEXT,OID_P2TEXT
|
||
|
||
**************************************************************************
|
||
* *
|
||
* CLR_PLAYER_TEXT - CLEAR THE TEXT FOR A SPECIFIC PLAYER. *
|
||
* A2 = PTR TO PLAYER DATA AREA *
|
||
* *
|
||
**************************************************************************
|
||
CLR_PLAYER_TEXT
|
||
PUSH A0
|
||
CALLA GPLAYNUM
|
||
SLL 4,A0
|
||
ADDI PLAYER_TOID_TAB,A0
|
||
MOVE *A0,A0,W
|
||
CALLA KILOBJ_ALL
|
||
PULLQ A0
|
||
RETS
|
||
|
||
SND_SBOMB_EXP1
|
||
.WORD 0E1F0H,88,08303H,0 ;Final explosion sound, channel 1
|
||
SND_SBOMB_EXP2
|
||
.WORD 0E2F0H,40,0838FH,0 ;Final explosion sound, channel 2
|
||
SND_SBOMB_EXP3
|
||
.WORD 0E3F0H,88,08390H,0 ;Final explosion sound, channel 3
|
||
|
||
.IF GERMAN
|
||
|
||
SBOMB_RECON_MESS
|
||
MESS_MAC RD15FONT,2,197,10+SKYTOPOF,COLOR_PWHITE,STRCNRMO,10000H|OID_TEXT
|
||
.STRING "INTELLIGENTE\n"
|
||
.STRING "BOMB\aE\a\d\*b\n\n"
|
||
.STRING "ERKUNDUNGSRAPPORT\a:\a\n\n"
|
||
.STRING "\b%d\*b ZIEL%p ZERST",C_GERO,"RT\a.\a\n\n"
|
||
.STRING "\b%,ld\*b BONUS-PUNKTE.",0
|
||
.WORD 5
|
||
.WORD 1
|
||
.LONG RD7FONT
|
||
.LONG RAMTEMP4
|
||
.WORD 5
|
||
.WORD 1
|
||
.WORD COLOR_WHITE
|
||
.LONG RAMTEMP1
|
||
.LONG RAMTEMP4
|
||
.LONG RAMTEMP2
|
||
.WORD 5
|
||
.WORD 1
|
||
.WORD COLOR_WHITE
|
||
.LONG RAMTEMP3
|
||
.LONG RAMTEMP4
|
||
.EVEN
|
||
|
||
.ELSE
|
||
|
||
SBOMB_RECON_MESS
|
||
MESS_MAC RD15FONT,2,197,25+SKYTOPOF,COLOR_PWHITE,STRCNRMO,10000H|OID_TEXT
|
||
.STRING "SMART BOM\aB\a\d\*b\n\n"
|
||
.STRING "RECON REPORT\a:\a\n\n"
|
||
.STRING "\b%d\*b TARGET%p DESTROYED\a.\a\n\n"
|
||
.STRING "\b%,ld\*b BONUS POINTS.",0
|
||
.WORD 5
|
||
.WORD 1
|
||
.LONG RD7FONT
|
||
.LONG RAMTEMP4
|
||
.WORD 5
|
||
.WORD 1
|
||
.WORD COLOR_WHITE
|
||
.LONG RAMTEMP1
|
||
.LONG RAMTEMP4
|
||
.LONG RAMTEMP2
|
||
.WORD 5
|
||
.WORD 1
|
||
.WORD COLOR_WHITE
|
||
.LONG RAMTEMP3
|
||
.LONG RAMTEMP4
|
||
.EVEN
|
||
|
||
.ENDIF
|
||
|
||
*
|
||
*SOUND TO MAKE WHEN AWARDING A SMART BOMB
|
||
*
|
||
NUM_SBOMB_SNDS .EQU 5
|
||
|
||
TAB_SBOMB_SNDS
|
||
.LONG SND_SBOMB1
|
||
TAB_SBOMB_SNDS_G
|
||
.LONG SND_SBOMB2, SND_SBOMB3, SND_SBOMB_1ST_PRIZE
|
||
.LONG SND_SBOMB4
|
||
|
||
SND_SBOMB1
|
||
.WORD 0F3F1H,53,0881DH,0 ;"Kick ass!"
|
||
SND_SBOMB2
|
||
.WORD 0F3F1H,79,0881BH,0 ;"Rock n'Roll"
|
||
SND_SBOMB3
|
||
.WORD 0F3F1H,48,08823H,0 ;"Toasty!"
|
||
SND_SBOMB4
|
||
.WORD 0F3F1H,130,08874H,0 ;"Hey Baby...Ka-Blam!"
|
||
|
||
SND_SBOMB_BOOBY
|
||
.WORD 0F3F1H,33,08819H,0 ;"Excrement"
|
||
SND_SBOMB_1ST_PRIZE
|
||
.WORD 0F3F1H,173,0881CH,0 ;"G-G-G-Gaow!!"
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* SCAN_FOR_SBOMB - SCAN A GIVEN OBJECT LIST FOR OBJECTS TO BLOW UP *
|
||
* 'CAUSE OF A SMART BOMB *
|
||
* A2 = PTR TO PLAYER SCANNING *
|
||
* B8 = PTR TO OBJECT LIST TO SCAN *
|
||
* RETURNS: *
|
||
* B2 = NUMBER OF DESTRUCTION CALLS MADE *
|
||
* *
|
||
**************************************************************************
|
||
*ENTRY POINT FOR HUMAN SMART BOMB
|
||
SCAN_FOR_SBOMB_HUMAN
|
||
MMTM SP,A0,A1,A3,A4,A5,A6,A7,A8,A9,A10,A11
|
||
MMTM SP,B0,B1,B3,B4,B5
|
||
MOVI OID_BLOWUP,B3
|
||
CLR B2 ;CLEAR DESTRUCTO COUNT
|
||
MOVI SUPPLSTS+4*020H,B5 ;THIS IS THE HUMAN ENTRY
|
||
JRUC SFS_RESET
|
||
|
||
*ENTRY POINT FOR ENEMY SMART BOMB
|
||
SCAN_FOR_SBOMB
|
||
MMTM SP,A0,A1,A3,A4,A5,A6,A7,A8,A9,A10,A11
|
||
MMTM SP,B0,B1,B3,B4,B5
|
||
MOVI OID_BLOWUP,B3
|
||
CLR B2 ;CLEAR DESTRUCTO COUNT
|
||
MOVI SUPPLSTS+2*020H,B5 ;THIS IS THE ENEMY ENTRY
|
||
SFS_RESET
|
||
MOVE *B5,B0,L ;GET THE SUPP LIST HEAD
|
||
JRZ SFS_X
|
||
SFS_LP
|
||
MOVE *B0(OCVECT),B1,L ;GRAB THE COLLISION VECTOR
|
||
JRZ SFS_TST ;CAN'T COLLIDE
|
||
|
||
MOVB *B0(OFLAGS+B_NOCOLL-7),B14 ;WANTS THE COLLISION?
|
||
JRN SFS_TST ;BR = NO
|
||
|
||
SFS_COLL_LIST
|
||
MOVE *B1+,B14,W ;GET ID
|
||
JRZ SFS_TST ;WE'VE HIT DEFAULT
|
||
CMP B3,B14 ;IS THIS THE GROUND I.D.?
|
||
JREQ SFS_MATCH ;BR = YES
|
||
ADDI 30H,B1 ;SKIP MASK AND VECTOR
|
||
JRUC SFS_COLL_LIST ;SEARCH SOME MORE
|
||
SFS_MATCH
|
||
MOVE *B0(OPART1),B14,L
|
||
JRZ SFS_GOT_HEAD ;ALRIGHT!
|
||
CMP B14,B0 ;IS THIS THE HEAD PART
|
||
JRNE SFS_TST ;BR = COOL
|
||
SFS_GOT_HEAD
|
||
MOVE B0,A8 ;SEND THE OBJECT IN A8
|
||
MOVE B0,B4 ;KEEP OBJECT FOR B-SIDE CMP
|
||
|
||
SFS_NEXT_LP
|
||
MOVE *B0(OSLINK),B0,L ;GET THE NEXT OBJECT TO PROCESS
|
||
JRZ SFS_BLOW_OBJECT ;NO MORE AFTER THIS
|
||
MOVE *B0(OPART1),B14,L
|
||
CMP B14,B4 ;IS NEXT CONNECTED TO THIS ONE
|
||
JREQ SFS_NEXT_LP ;BR = YES
|
||
SFS_BLOW_OBJECT
|
||
MOVE *B0(OID),B4,W ;GET IT'S I.D.
|
||
|
||
ADDK 10H,B1 ;SKIP MASK
|
||
MOVE *B1,B14,L ;GRAB THE VECTOR
|
||
|
||
INC B2 ;ONE MORE BABY
|
||
PUSH A2
|
||
CALL B14 ;CALL-A-ROUTINE
|
||
PULLQ A2
|
||
|
||
MOVE B0,B0 ;LIST DONE?
|
||
JRZ SFS_X ;BR = YES
|
||
MOVB *B0(OCTRL+B_INUSE-7),B14 ;NEXT OBJECT DELETED?
|
||
JRNN SFS_RESET ;BR = YES, START SCAN AGAIN
|
||
MOVE *B0(OID),B14,W
|
||
CMP B4,B14 ;DID WE GET AN OID CHANGE
|
||
JRNE SFS_RESET ;BR = YES, START SCAN AGAIN
|
||
JRUC SFS_LP
|
||
SFS_TST
|
||
MOVE *B0(OSLINK),B0,L ;GET THE NEXT
|
||
JRNE SFS_LP
|
||
SFS_X
|
||
MMFM SP,B0,B1,B3,B4,B5
|
||
MMFM SP,A0,A1,A3,A4,A5,A6,A7,A8,A9,A10,A11
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* DO_HEADS_UP *
|
||
* *
|
||
* Pop a Heads-Up display for a given player. *
|
||
* Kills current display if priority equal or higher. *
|
||
* *
|
||
* A0 = Heads up table: *
|
||
* .WORD Priority, Duration *
|
||
* .LONG P1_Head, P2_Head, P3_Head *
|
||
* A1 = Alternate table for 2 player model *
|
||
* A2 = Ptr to player data *
|
||
* *
|
||
* Returns: *
|
||
* Z = No heads up display activated *
|
||
* NZ = Successful creation of display *
|
||
* *
|
||
**************************************************************************
|
||
DO_HEADS_UP
|
||
MMTM SP,A0,A1,A7,A9,A11
|
||
MOVE @NPLAYERS,A14,W
|
||
DEC A14
|
||
JRNZ DHU_3P ;BR = This is a 3 player model
|
||
MOVE A1,A0 ;Switch in the 2
|
||
DHU_3P
|
||
MOVE *A0,A1,W
|
||
CMPI 0F0H,A1 ;VERY HIGH PRI?
|
||
JRHS DHU_NO_CAN ;BR = YES, NO CANNING
|
||
MOVE @HUP_OFF,A14,W ;ARE HEADS UP DISPS TURNED OFF?
|
||
JRNZ DHU_FAIL ;BR = YES
|
||
DHU_NO_CAN
|
||
MOVE *A2(PDTIME),A14,W ;IS DISPLAY EFFECT RUNNING?
|
||
JRZ DHU_GO ;BR = NO
|
||
MOVE *A2(PDPRIORITY),A14,W ;DO A PRIORITY CHECK
|
||
CMP A14,A1 ;HOW DOES THIS NEW ONE FAIR
|
||
JRLO DHU_FAIL ;BR = TOO LOW
|
||
DHU_GO
|
||
MOVE A0,A9
|
||
MOVE A2,A11
|
||
CREATE PID_IND,HEADS_UP_PROCESS
|
||
DHU_X
|
||
MMFM SP,A0,A1,A7,A9,A11
|
||
RETS
|
||
|
||
DHU_FAIL
|
||
SETZ ;Flag our failure
|
||
JRUC DHU_X
|
||
|
||
**************************************************************************
|
||
* *
|
||
* START_HUP_WAIT - PROCESS SUBROUTINE TO START A NEW HEADS UP PROCESS *
|
||
* BUT NOT UNTIL CURRENT ONE RUNNING, IF IT IS OF EQUAL *
|
||
* OR HIGHER PRIORITY, IT THROUGH. *
|
||
* A0 = NEW PRIORITY *
|
||
* A1 = NEW TIME *
|
||
* A11 = PTR TO PLAYER *
|
||
* NOTE: CALL WITH JSRP *
|
||
* *
|
||
**************************************************************************
|
||
START_HUP_WAIT
|
||
MOVE *A11(PDTIME),A14,W
|
||
JRZ SHW_GO
|
||
MOVE *A11(PDPRIORITY),A14,W
|
||
CMP A14,A0 ;ARE WE BETTER THAN CURRENT?
|
||
JRHI SHW_KIL_GO ;BR = YES, KILL CURRENT
|
||
MMTM A12,A0,A1
|
||
SLEEP 2
|
||
MMFM A12,A0,A1
|
||
JRUC START_HUP_WAIT
|
||
SHW_KIL_GO
|
||
MOVE A11,A2
|
||
CALLR CLR_HEADS_UP
|
||
SHW_GO
|
||
MOVE A0,*A11(PDPRIORITY),W
|
||
MOVE A1,*A11(PDTIME),W
|
||
RETP
|
||
|
||
**************************************************************************
|
||
* *
|
||
* HEADS_UP_PROCESS - PROCESS TO OUTPUT AND TIME A HEADS UP DISPLAY. *
|
||
* A9 = PTR TO HEADS UP TABLE *
|
||
* A11 = PTR TO PLAYER *
|
||
* *
|
||
**************************************************************************
|
||
HEADS_UP_PROCESS
|
||
MOVE *A11(PDOBJ),A8,L
|
||
JRZ HUP_SKIP_DEL
|
||
CALLA OBJPROC_KILL
|
||
CALLA DELETE_OBJ
|
||
CLRM *A11(PDOBJ),L ;CLEAR BUBBA
|
||
HUP_SKIP_DEL
|
||
MOVE *A9+,A0,W
|
||
MOVE A0,*A11(PDPRIORITY),W
|
||
MOVE *A9+,A10,W
|
||
MOVE A10,*A11(PDTIME),W ;LOAD THE NEW STUFF
|
||
|
||
MOVE A11,A2
|
||
CALLA GPLAYNUM
|
||
SLL 5,A0
|
||
ADD A9,A0
|
||
MOVE *A0,A0,L
|
||
MOVE A0,B0
|
||
CALLA MULTIMAKE ;CREATE THE HEADS UP DISPLAY
|
||
JRZ HUP_DIE ;BR = WE DIDN'T GET IT!
|
||
|
||
MOVE A13,*A8(OPLINK),L
|
||
MOVE A8,*A11(PDOBJ),L ;STORE THE OBJECT
|
||
|
||
MOVE A11,*A8(OPLAYER),L ;SAVE DIS FOR RANDOM BONUS HUP
|
||
|
||
MOVI PIZPOS-1,A1
|
||
SLL 16,A1
|
||
CALLA STORE_ZVAL
|
||
|
||
MOVE *A11(PSTATUSXY),A1,L
|
||
CALLA SET_OFFP
|
||
CALLA INSERT_OBJ
|
||
|
||
SLEEPR A10 ;KEEP IT OUT
|
||
CLR A14
|
||
MOVE A14,*A11(PDOBJ),L ;WE GONE
|
||
MOVE A14,*A8(OPLINK),L
|
||
CALLA DELETE_OBJ
|
||
HUP_DIE
|
||
DIE
|
||
|
||
**************************************************************************
|
||
* *
|
||
* CLR_HEADS_UP - CLEAR CURRENT PLAYER HEADS UP DISPLAY, NO MATTER *
|
||
* WHATS UP. *
|
||
* A2 = PLAYER DATA AREA *
|
||
* *
|
||
**************************************************************************
|
||
CLR_HEADS_UP
|
||
PUSH A8
|
||
MOVE *A2(PDOBJ),A8,L
|
||
JRZ CHU_SKIP_DEL
|
||
CALLA OBJPROC_KILL
|
||
CALLA DELETE_OBJ
|
||
CLRM *A2(PDOBJ),L
|
||
CHU_SKIP_DEL
|
||
CLRM *A2(PDTIME),W
|
||
PULLQ A8
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* A_FALL_FUNC - ANIM FUNC FOR POWERUPS THAT FALL TOP TO BOTTOM *
|
||
* NEVER LANDING ON THE GROUND. IT WILL DELETE *
|
||
* THEM WHEN THEY GET OFF THE SCREEN. *
|
||
* A8 = PTR TO POWERUP HEAD PART *
|
||
* *
|
||
**************************************************************************
|
||
A_FALL_FUNC
|
||
MOVE *A8(OPLINK),A0,L
|
||
JRZ AFF_SCRCK
|
||
CALLA GETA11 ;GET REMAINING FLIGHT TIME
|
||
JRZ AFF_SCRCK ;BR = NOT FLYING YET
|
||
JAUC PULL_ANIM ;LET FLY CODE TAKE OVER
|
||
AFF_SCRCK
|
||
CALLA SCRTST
|
||
JREQ AFF_X
|
||
CALLA OBJPROC_KILL ;KILL THE CONTROL
|
||
JAUC DELETE_OBJ ;AND THE OBJECT
|
||
AFF_X
|
||
RETS
|
||
|
||
|
||
.DATA
|
||
|
||
**************************************************************************
|
||
* *
|
||
* POWERUP INITIALIZATION TABLES *
|
||
* *
|
||
**************************************************************************
|
||
|
||
*POWER UP SMART BOMB INIT TABLES
|
||
SBOMB_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long SCREAM ;PAL LIST
|
||
.word OID_SBOMB, 0
|
||
LWWWW XBOMB1, DMAWNZ, M_NOPIXSCAN, 0, OM_COLL | OM_ANIM
|
||
.LONG POWER_COLL
|
||
.LONG SCREAM_ANIM
|
||
|
||
SBOMB2_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long SCREAM ;PAL LIST
|
||
.word OID_SBOMB, 0
|
||
LWWWW XBOMB1, DMAWNZ, M_NOPIXSCAN|M_DBLSCL, 0, OM_COLL | OM_ANIM
|
||
.LONG POWER_COLL
|
||
.LONG SCREAM_ANIM
|
||
|
||
SCREAM_ANIM
|
||
LW XBOMB1,4
|
||
LW XBOMB2,4
|
||
.long 0
|
||
|
||
*POWER UP CD INIT TABLES
|
||
CD_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_CD ;PAL LIST
|
||
.word OID_CD, 0
|
||
LWWWW XCD1, DMAWNZ, M_NOPIXSCAN, 0, OM_COLL | OM_ANIM
|
||
.LONG POWER_COLL
|
||
.LONG CD_ANIM
|
||
|
||
CD2_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_CD ;PAL LIST
|
||
.word OID_CD, 0
|
||
LWWWW XCD1, DMAWNZ, M_NOPIXSCAN|M_DBLSCL, 0, OM_COLL | OM_ANIM
|
||
.LONG POWER_COLL
|
||
.LONG CD_ANIM
|
||
|
||
CD_ANIM
|
||
LW XCD1,2
|
||
LW XCD2,2
|
||
LW XCD3,2
|
||
LW XCD4,2
|
||
LW XCD5,2
|
||
LW XCD6,2
|
||
LW XCD7,2
|
||
LW XCD8,2
|
||
.long 0
|
||
|
||
*POWER UP MAMMERY BOOBY PRIZE INIT TABLE
|
||
BOOBY_PRIZE_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long STATUp1 ;PAL LIST
|
||
.word OID_BOOBY, 0
|
||
LWWWW MAMMYAWARDx, DMAWNZ, M_NOPIXSCAN, 0, OM_COLL
|
||
.LONG POWER_COLL
|
||
|
||
*POWER UP ROCKET INIT TABLE
|
||
PROCK_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_CD ;PAL LIST
|
||
.word OID_PROCK, 0
|
||
LWWWW XCDSM1, DMAWNZ, M_NOPIXSCAN, 0, OM_COLL | OM_ANIM
|
||
.LONG POWER_COLL
|
||
.LONG CDSM_ANIM
|
||
|
||
CDSM_ANIM
|
||
LW XCDSM1,2
|
||
LW XCDSM2,2
|
||
LW XCDSM3,2
|
||
LW XCDSM4,2
|
||
LW XCDSM5,2
|
||
LW XCDSM6,2
|
||
LW XCDSM7,2
|
||
LW XCDSM8,2
|
||
.long 0
|
||
|
||
*
|
||
* Extra life powerup
|
||
*
|
||
LIFE_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_NEWPSHA ;PAL LIST
|
||
.word OID_LIFE, 0
|
||
LWWWW NPSHAKE, DMAWNZ, M_NOPIXSCAN, 0, OM_COLL
|
||
.LONG POWER_COLL
|
||
|
||
LIFE2_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_NEWPSHA ;PAL LIST
|
||
.word OID_LIFE, 0
|
||
LWWWW NPSHAKE, DMAWNZ, M_NOPIXSCAN|M_DBLSCL, 0, OM_COLL
|
||
.LONG POWER_COLL
|
||
|
||
*
|
||
* Ammo clip powerup
|
||
*
|
||
CLIP_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_CLIPPS ;PAL LIST
|
||
.word OID_CLIP, 0
|
||
LWWWW MAGG1, DMAWNZ, M_NOPIXSCAN, 0, OM_COLL
|
||
.LONG POWER_COLL
|
||
|
||
*
|
||
* Shield powerup
|
||
*
|
||
SHIELD_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_XSHLD ;PAL LIST
|
||
.word OID_SHIELD, 0
|
||
LWWWW XSHIELD, DMAWNZ, M_NOPIXSCAN, 0, OM_COLL
|
||
.LONG POWER_COLL
|
||
|
||
SHIELD2_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_XSHLD ;PAL LIST
|
||
.word OID_SHIELD, 0
|
||
LWWWW XSHIELD, DMAWNZ, M_NOPIXSCAN|M_DBLSCL, 0, OM_COLL
|
||
.LONG POWER_COLL
|
||
|
||
*
|
||
* SuperGun powerup
|
||
*
|
||
SUPERGUN_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_SUPRGN ;PAL LIST
|
||
.word OID_SUPERGUN, 0
|
||
LWWWW SUPERGUN, DMAWNZ, M_NOPIXSCAN, 0, OM_COLL
|
||
.LONG POWER_COLL
|
||
|
||
SUPERGUN2_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_SUPRGN ;PAL LIST
|
||
.word OID_SUPERGUN, 0
|
||
LWWWW SUPERGUN, DMAWNZ, M_NOPIXSCAN|M_DBLSCL, 0, OM_COLL
|
||
.LONG POWER_COLL
|
||
|
||
*
|
||
* Lazer disc
|
||
*
|
||
LAZER_INIT
|
||
.byte 2, 0, 0, 2 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_LD_HT,P_LDFLAM ;PAL LIST
|
||
.word OID_LAZER, 0
|
||
LWWWW XLD1, DMAWNZ, M_NOPIXSCAN, 0, OM_COLL
|
||
.LONG POWER_COLL
|
||
|
||
LWWWW DISCFLM1, DMAWNZ, 0, 0, OM_COLL | OM_ANIM
|
||
.LONG DUMCOLL
|
||
.LONG LAZER_FLAME_ANIM
|
||
|
||
LAZER2_INIT
|
||
.byte 2, 0, 0, 2 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_LD_HT,P_LDFLAM ;PAL LIST
|
||
.word OID_LAZER, 0
|
||
LWWWW XLD1, DMAWNZ, M_NOPIXSCAN|M_DBLSCL, 0, OM_COLL
|
||
.LONG POWER_COLL
|
||
|
||
LWWWW DISCFLM1, DMAWNZ, M_DBLSCL, 0, OM_COLL | OM_ANIM
|
||
.LONG DUMCOLL
|
||
.LONG LAZER_FLAME_ANIM
|
||
|
||
LAZER_FLAME_ANIM
|
||
LW DISCFLM1,4
|
||
LW DISCFLM2,4
|
||
LW DISCFLM3,4
|
||
LW DISCFLM4,4
|
||
LW DISCFLM5,4
|
||
.LONG 0
|
||
|
||
**************************************************************************
|
||
* *
|
||
* POWER UP COLLISIONS *
|
||
* *
|
||
**************************************************************************
|
||
POWER_COLL:
|
||
;***** WWL PATTERN,[MASK],FUNC
|
||
WWL OID_GRND,0FFFFH,POWER_GROUND_COLL
|
||
WL 0,DUMCRETS
|
||
|
||
|
||
*
|
||
* Heads up tables
|
||
*
|
||
|
||
*
|
||
* "SUPERGUN" Heads up display
|
||
*
|
||
SUPERGUN_TAB_3P
|
||
.WORD 020H, 100
|
||
.LONG RED_SUPERGUN_INIT, YEL_SUPERGUN_INIT, BLUE3_SUPERGUN_INIT
|
||
|
||
SUPERGUN_TAB_2P
|
||
.WORD 020H, 100
|
||
.LONG RED_SUPERGUN_INIT, BLUE2_SUPERGUN_INIT
|
||
|
||
RED_SUPERGUN_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXR ;IMGPAL
|
||
.WORD OID_P1HUP,0
|
||
LWWWW SUPERGUN_R, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
YEL_SUPERGUN_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXY ;IMGPAL
|
||
.WORD OID_P2HUP,0
|
||
LWWWW SUPERGUN_Y, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
BLUE3_SUPERGUN_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXB ;IMGPAL
|
||
.WORD OID_P3HUP,0
|
||
LWWWW SUPERGUN_B, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
BLUE2_SUPERGUN_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXB ;IMGPAL
|
||
.WORD OID_P2HUP,0
|
||
LWWWW SUPERGUN_B, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
|
||
*
|
||
* "EXTRA ENERGY" Heads up display
|
||
*
|
||
ENERGY_TAB_3P
|
||
.WORD 020H, 100
|
||
.LONG RED_ENERGY_INIT, YEL_ENERGY_INIT, BLUE3_ENERGY_INIT
|
||
|
||
ENERGY_TAB_2P
|
||
.WORD 020H, 100
|
||
.LONG RED_ENERGY_INIT, BLUE2_ENERGY_INIT
|
||
|
||
RED_ENERGY_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXR ;IMGPAL
|
||
.WORD OID_P1HUP,0
|
||
LWWWW EXTRAE_R, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
YEL_ENERGY_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXY ;IMGPAL
|
||
.WORD OID_P2HUP,0
|
||
LWWWW EXTRAE_Y, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
BLUE3_ENERGY_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXB ;IMGPAL
|
||
.WORD OID_P3HUP,0
|
||
LWWWW EXTRAE_B, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
BLUE2_ENERGY_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXB ;IMGPAL
|
||
.WORD OID_P2HUP,0
|
||
LWWWW EXTRAE_B, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
|
||
*
|
||
* "LAZER DISC" Heads up display
|
||
*
|
||
LAZER_TAB_3P
|
||
.WORD 020H, 100
|
||
.LONG RED_LAZER_INIT, YEL_LAZER_INIT, BLUE3_LAZER_INIT
|
||
|
||
LAZER_TAB_2P
|
||
.WORD 020H, 100
|
||
.LONG RED_LAZER_INIT, BLUE2_LAZER_INIT
|
||
|
||
RED_LAZER_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXR ;IMGPAL
|
||
.WORD OID_P1HUP,0
|
||
LWWWW LAZERDSC_R, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
YEL_LAZER_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXY ;IMGPAL
|
||
.WORD OID_P2HUP,0
|
||
LWWWW LAZERDSC_Y, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
BLUE3_LAZER_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXB ;IMGPAL
|
||
.WORD OID_P3HUP,0
|
||
LWWWW LAZERDSC_B, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
BLUE2_LAZER_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXB ;IMGPAL
|
||
.WORD OID_P2HUP,0
|
||
LWWWW LAZERDSC_B, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
|
||
*
|
||
* "3 CDs" Heads up display
|
||
*
|
||
PROCK_TAB_3P
|
||
.WORD 01FH, 100
|
||
.LONG RED_PROCK_INIT, YEL_PROCK_INIT, BLUE3_PROCK_INIT
|
||
|
||
PROCK_TAB_2P
|
||
.WORD 01FH, 100
|
||
.LONG RED_PROCK_INIT, BLUE2_PROCK_INIT
|
||
|
||
RED_PROCK_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXR ;IMGPAL
|
||
.WORD OID_P1HUP,0
|
||
LWWWW THREECD_R, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
YEL_PROCK_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXY ;IMGPAL
|
||
.WORD OID_P2HUP,0
|
||
LWWWW THREECD_Y, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
BLUE3_PROCK_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXB ;IMGPAL
|
||
.WORD OID_P3HUP,0
|
||
LWWWW THREECD_B, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
BLUE2_PROCK_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXB ;IMGPAL
|
||
.WORD OID_P2HUP,0
|
||
LWWWW THREECD_B, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
|
||
*
|
||
* "3 CDs" Heads up display (small version)
|
||
*
|
||
SM_PROCK_TAB_3P
|
||
.WORD 00FH, 60
|
||
.LONG SM_RED_PROCK_INIT, SM_YEL_PROCK_INIT, SM_BLUE3_PROCK_INIT
|
||
|
||
SM_PROCK_TAB_2P
|
||
.WORD 00FH, 60
|
||
.LONG SM_RED_PROCK_INIT, SM_BLUE2_PROCK_INIT
|
||
|
||
SM_RED_PROCK_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXR ;IMGPAL
|
||
.WORD OID_P1HUP,0
|
||
LWWWW LILTHREECD_R, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
SM_YEL_PROCK_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXY ;IMGPAL
|
||
.WORD OID_P2HUP,0
|
||
LWWWW LILTHREECD_Y, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
SM_BLUE3_PROCK_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXB ;IMGPAL
|
||
.WORD OID_P3HUP,0
|
||
LWWWW LILTHREECD_B, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
SM_BLUE2_PROCK_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXB ;IMGPAL
|
||
.WORD OID_P2HUP,0
|
||
LWWWW LILTHREECD_B, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
*
|
||
* "10 CDs" Heads up display
|
||
*
|
||
PCD_TAB_3P
|
||
.WORD 01FH, 100
|
||
.LONG RED_PCD_INIT, YEL_PCD_INIT, BLUE3_PCD_INIT
|
||
|
||
PCD_TAB_2P
|
||
.WORD 01FH, 100
|
||
.LONG RED_PCD_INIT, BLUE2_PCD_INIT
|
||
|
||
RED_PCD_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXR ;IMGPAL
|
||
.WORD OID_P1HUP,0
|
||
LWWWW TENCD_R, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
YEL_PCD_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXY ;IMGPAL
|
||
.WORD OID_P2HUP,0
|
||
LWWWW TENCD_Y, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
BLUE3_PCD_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXB ;IMGPAL
|
||
.WORD OID_P3HUP,0
|
||
LWWWW TENCD_B, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
BLUE2_PCD_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXB ;IMGPAL
|
||
.WORD OID_P2HUP,0
|
||
LWWWW TENCD_B, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
|
||
*
|
||
* "10 CDs" Heads up display
|
||
*
|
||
SM_PCD_TAB_3P
|
||
.WORD 0FH, 60
|
||
.LONG SM_RED_PCD_INIT, SM_YEL_PCD_INIT, SM_BLUE3_PCD_INIT
|
||
|
||
SM_PCD_TAB_2P
|
||
.WORD 0FH, 60
|
||
.LONG SM_RED_PCD_INIT, SM_BLUE2_PCD_INIT
|
||
|
||
SM_RED_PCD_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXR ;IMGPAL
|
||
.WORD OID_P1HUP,0
|
||
LWWWW LILTENCD_R, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
SM_YEL_PCD_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXY ;IMGPAL
|
||
.WORD OID_P2HUP,0
|
||
LWWWW LILTENCD_Y, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
SM_BLUE3_PCD_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXB ;IMGPAL
|
||
.WORD OID_P3HUP,0
|
||
LWWWW LILTENCD_B, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
SM_BLUE2_PCD_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXB ;IMGPAL
|
||
.WORD OID_P2HUP,0
|
||
LWWWW LILTENCD_B, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
*
|
||
* "WINGS" Heads up display
|
||
*
|
||
WINGS_TAB_3P
|
||
.WORD 021H, 100
|
||
.LONG RED_WINGS_INIT, YEL_WINGS_INIT, BLUE3_WINGS_INIT
|
||
|
||
WINGS_TAB_2P
|
||
.WORD 021H, 100
|
||
.LONG RED_WINGS_INIT, BLUE2_WINGS_INIT
|
||
|
||
RED_WINGS_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXR ;IMGPAL
|
||
.WORD OID_P1HUP,0
|
||
LWWWW WINGS_R, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
YEL_WINGS_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXY ;IMGPAL
|
||
.WORD OID_P2HUP,0
|
||
LWWWW WINGS_Y, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
BLUE3_WINGS_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXB ;IMGPAL
|
||
.WORD OID_P3HUP,0
|
||
LWWWW WINGS_B, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
BLUE2_WINGS_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXB ;IMGPAL
|
||
.WORD OID_P2HUP,0
|
||
LWWWW WINGS_B, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM|OM_CFUNC
|
||
.LONG ANIM_HEADS_UP_FLASH
|
||
LW C_OCONST, 0101H
|
||
|
||
*
|
||
*"PRESS SIDE BUTTON FOR ALTERNATE WEAPON" HEADS_UP DISPLAY
|
||
*
|
||
ALTWEAP_TAB_3P
|
||
.WORD 0F1H, 150
|
||
.LONG RED_ALTWEAP_INIT, YEL_ALTWEAP_INIT, BLUE3_ALTWEAP_INIT
|
||
|
||
ALTWEAP_TAB_2P
|
||
.WORD 0F1H, 150
|
||
.LONG RED_ALTWEAP_INIT, BLUE2_ALTWEAP_INIT
|
||
|
||
RED_ALTWEAP_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXR ;IMGPAL
|
||
.WORD OID_P1HUP,0
|
||
LWWWW PRESSBUT_R, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM
|
||
.LONG ANIM_ALTWEAP
|
||
|
||
YEL_ALTWEAP_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXY ;IMGPAL
|
||
.WORD OID_P2HUP,0
|
||
LWWWW PRESSBUT_Y, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM
|
||
.LONG ANIM_ALTWEAP
|
||
|
||
BLUE3_ALTWEAP_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXB ;IMGPAL
|
||
.WORD OID_P3HUP,0
|
||
LWWWW PRESSBUT_B, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM
|
||
.LONG ANIM_ALTWEAP
|
||
|
||
BLUE2_ALTWEAP_INIT
|
||
.byte 1, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long P_PRUPTXB ;IMGPAL
|
||
.WORD OID_P2HUP,0
|
||
LWWWW PRESSBUT_B, DMAWNZ, M_NOSCALE|M_SCRNOBJ, 0 , OM_ANIM
|
||
.LONG ANIM_ALTWEAP
|
||
|
||
*
|
||
* Generic heads up flash
|
||
*
|
||
ANIM_HEADS_UP_FLASH
|
||
LWLW 1,2|AFunc,A_Set_AnimLoop+1,5
|
||
AHUF_LOOP
|
||
LWL 1,2|AFunc,OBJ_CONST
|
||
LWL 1,1|AFunc,OBJ_OFF
|
||
LWL 1,1|AFunc,OBJ_WNZ
|
||
LWL 1,1|AFunc,OBJ_ON
|
||
LWLL 1,1|AFunc,A_Anim_DSJ+2,AHUF_LOOP
|
||
|
||
LW 1,120
|
||
LW 1,120
|
||
|
||
.LONG 0
|
||
|
||
*
|
||
* Animation for the "Use your CD button BOZO!" message
|
||
*
|
||
ANIM_ALTWEAP
|
||
LW 1,20
|
||
LWL 1,5|AFunc,OBJ_ON
|
||
LWL 1,5|AFunc,OBJ_OFF
|
||
LWL 1,5|AFunc,OBJ_ON
|
||
LWL 1,5|AFunc,OBJ_OFF
|
||
LWL 1,5|AFunc,OBJ_ON
|
||
LWL 1,5|AFunc,OBJ_OFF
|
||
LWL 1,5|AFunc,OBJ_ON
|
||
LWL 1,5|AFunc,OBJ_OFF
|
||
LWL 1,100|AFunc,OBJ_ON
|
||
|
||
.LONG 0
|
||
|
||
*
|
||
* Different palettes for smart bomb explosion
|
||
*
|
||
TAB_SBOMB_COLORS_2P
|
||
.LONG P_BOOMRED,P_BOOMBLU
|
||
TAB_SBOMB_COLORS_3P
|
||
.LONG P_BOOMRED,P_BOOMYEL,P_BOOMBLU
|
||
|
||
P_BOOMRED:
|
||
.word 256
|
||
.word 00000h,00000h,00421h,00842h,00c63h,01084h,018c6h,02529h
|
||
.word 0294ah,02d4bh,0318ch,035adh,039ceh,03defh,04210h,035ceh
|
||
.word 0356ch,0358eh,041efh,0458ch,03d6bh,0392ah,03dd0h,041aeh
|
||
.word 03ce8h,04000h,03800h,03909h,045cfh,041d0h,04a31h,04420h
|
||
.word 03863h,03085h,03886h,0352ch,04632h,0456dh,03cc7h,04442h
|
||
.word 03420h,03c41h,04085h,0356fh,03d2bh,04463h,04c20h,034c8h
|
||
.word 04a52h,0394eh,04485h,05040h,038eah,03dd2h,04e73h,04a53h
|
||
.word 0410ah,05083h,034c7h,041f3h,039b1h,0412dh,048e8h,05440h
|
||
.word 040a6h,04635h,0450ah,05840h,05294h,0454bh,05c60h,05273h
|
||
.word 05109h,049cfh,054a4h,06c81h,074c2h,06060h,04e10h,05c81h
|
||
.word 06860h,06481h,04a32h,049ach,030c8h,02ca6h,03821h,03d8fh
|
||
.word 054c6h,030a6h,03000h,04c62h,02800h,03022h,07080h,07880h
|
||
.word 06c80h,03990h,06840h,07cc1h,07ca0h,0416fh,07060h,07ce2h
|
||
.word 02000h,078a1h,07d23h,07d24h,06c60h,07860h,07dc8h,07fb7h
|
||
.word 07d45h,039b3h,07e4dh,07fd8h,07e6dh,07f54h,07e0ah,01400h
|
||
.word 07e8eh,07d44h,00c00h,07eafh,07f56h,07738h,07f99h,07946h
|
||
.word 0514ch,07e4ch,07ffah,07bbch,055abh,02c41h,052b4h,0554ch
|
||
.word 07fffh,07fddh,05420h,05c40h,01c00h,05694h,056b5h,07a4bh
|
||
.word 07e0bh,075edh,07166h,05ad6h,06c00h,05ed6h,05ef7h,06318h
|
||
.word 0596ch,04a56h,05ef8h,05297h,054a2h,05ab6h,05ad5h,05275h
|
||
.word 064c5h,06739h,056b7h,060a4h,04484h,05ad8h,05eb7h,05697h
|
||
.word 04ce6h,05633h,0498eh,05698h,05ef9h,05298h,044a6h,0620dh
|
||
.word 07670h,075a8h,05eb5h,065cbh,06904h,065cdh,05e53h,05928h
|
||
.word 05482h,05a12h,06ce4h,068a2h,06929h,03d29h,07693h,07d66h
|
||
.word 07904h,07ed3h,07da7h,07f32h,0764dh,07105h,07967h,068c3h
|
||
.word 05e11h,070c2h,07ef1h,07ffdh,07bffh,07f75h,06af5h,074e3h
|
||
.word 04d49h,07ed0h,07f96h,05a74h,06e70h,051ceh,055f4h,06d85h
|
||
.word 070c6h,07169h,06dabh,068e6h,07925h,06b5ah,06527h,058c6h
|
||
.word 07b34h,05ab8h,05eb9h,06a4eh,0660dh,07fb9h,07fd9h,07e4fh
|
||
.word 04508h,05e13h,07b56h,06f19h,04daeh,05d6ch,0768eh,07ad5h
|
||
.word 055efh,07318h,0671bh,0779ch,05a97h,05883h,05e77h,05e99h
|
||
.word 069edh,0520fh,066b2h,00000h,00000h,00000h,00000h,00000h
|
||
|
||
P_BOOMYEL
|
||
.word 256
|
||
.word 00000h,00000h,00421h,00842h,00c63h,01084h,018c6h,02529h
|
||
.word 0294ah,02d4ah,0318ch,035adh,039ceh,03defh,04210h,035aeh
|
||
.word 0356bh,0398eh,0420fh,045ech,03dcbh,03969h,041d0h,041cdh
|
||
.word 03d67h,04140h,03920h,03968h,045eeh,041cfh,04a51h,04580h
|
||
.word 03943h,03104h,03904h,03529h,04a32h,045abh,03d66h,04582h
|
||
.word 03520h,03d61h,04164h,03d6eh,03d69h,04583h,04da0h,03506h
|
||
.word 04a52h,0394bh,04564h,051e0h,03907h,049d2h,04e73h,04e53h
|
||
.word 04168h,051e3h,03526h,04df3h,045b1h,04129h,049a7h,05600h
|
||
.word 04165h,05235h,04588h,05a00h,05294h,045cah,05e40h,05293h
|
||
.word 051e8h,04a0eh,05604h,06ea1h,07702h,06260h,04e50h,05e61h
|
||
.word 06a80h,06681h,04a31h,04a2ch,03106h,02d05h,03921h,03d8dh
|
||
.word 05606h,03105h,03100h,04dc2h,028c0h,030e1h,072e0h,07b00h
|
||
.word 06ec0h,0418fh,06a60h,07f41h,07f40h,0416bh,072c0h,07f42h
|
||
.word 020a0h,07b01h,07f83h,07f64h,06ea0h,07ae0h,07fa8h,073f7h
|
||
.word 07f65h,049b3h,07fcdh,073f8h,07fedh,077f4h,07fcah,01460h
|
||
.word 07feeh,07f84h,00c40h,07fefh,07bf6h,077b8h,07bf9h,07b46h
|
||
.word 051eah,07fech,073fah,07bdch,0568bh,02d01h,052b5h,055eah
|
||
.word 07fffh,07ffdh,055e0h,05e20h,01c80h,056b4h,056b5h,07bcbh
|
||
.word 07fcbh,0774dh,07346h,05ad6h,06e40h,05ef6h,05ef7h,06318h
|
||
.word 05a2bh,05656h,062f8h,05a97h,05642h,05ab6h,05ad5h,05675h
|
||
.word 06665h,06739h,05ab7h,06244h,04584h,062d8h,05eb6h,05e97h
|
||
.word 04de6h,05651h,049cch,06298h,066f9h,05e98h,04585h,0630dh
|
||
.word 07790h,07768h,05ed5h,066ebh,06ae4h,066cdh,05e92h,05a48h
|
||
.word 05622h,05a50h,06ec4h,06aa2h,06a89h,03da9h,07773h,07f86h
|
||
.word 07b24h,07fd3h,07fa7h,077f2h,077adh,072e5h,07b47h,06aa3h
|
||
.word 05e90h,072e2h,07bf1h,07bfdh,07bffh,077f5h,06b55h,07703h
|
||
.word 04e29h,07ff0h,073f6h,05a93h,06f50h,0524eh,055f0h,06f65h
|
||
.word 072a6h,07309h,06f0bh,06a86h,07b45h,06b5ah,066a7h,05a26h
|
||
.word 077d4h,062b8h,066b9h,06b4eh,0670dh,077f9h,073f9h,07fafh
|
||
.word 045c8h,05e50h,077d6h,06f38h,04e0dh,05e4bh,077aeh,07b95h
|
||
.word 0566fh,07378h,06f1bh,077bch,05e96h,05a23h,05e74h,06698h
|
||
.word 06b0dh,0528fh,06732h,00000h,00000h,00000h,00000h,00000h
|
||
|
||
P_BOOMBLU
|
||
.word 256
|
||
.word 00000h,00000h,00421h,00842h,00c63h,01084h,018c6h,02529h
|
||
.word 0294ah,0296ah,0318ch,035adh,039ceh,03defh,04210h,039adh
|
||
.word 02dadh,031cch,03e10h,031f1h,02dafh,0258eh,03a0eh,03610h
|
||
.word 01d8fh,00110h,000eeh,0218eh,03a31h,03a0fh,04652h,00111h
|
||
.word 00d2eh,0112ch,0116eh,025ach,04a51h,02e11h,0198fh,00951h
|
||
.word 000cdh,004efh,01170h,02debh,025cfh,00d51h,00133h,0198dh
|
||
.word 04a52h,029cch,01191h,00134h,01dceh,03e4eh,04e73h,04e72h
|
||
.word 021d0h,00d74h,0196dh,0426fh,03a2dh,0260fh,01dd2h,00135h
|
||
.word 01590h,04eb1h,021f1h,00136h,05294h,029f1h,00137h,04e94h
|
||
.word 021f4h,03a32h,01195h,0057bh,0099dh,00158h,04253h,00537h
|
||
.word 0017ah,00579h,04652h,031d2h,0196ch,0152bh,0050eh,031edh
|
||
.word 019d5h,0154ch,000cch,00953h,000aah,0050ch,0017ch,0019eh
|
||
.word 0015bh,0320ch,0019ah,0059fh,0017fh,02e0eh,0019ch,0099fh
|
||
.word 00088h,0059eh,00d9fh,011bfh,0017bh,001beh,021dfh,066ffh
|
||
.word 015dfh,03e6dh,0365fh,06f1fh,0363fh,0529fh,029ffh,00045h
|
||
.word 03a3fh,0119fh,00023h,03e3fh,05affh,0635dh,0673fh,019feh
|
||
.word 02a34h,0321fh,0775fh,0739eh,02dd5h,004abh,05695h,02a55h
|
||
.word 07fffh,077bfh,00155h,00157h,00067h,052b5h,056b5h,02ddeh
|
||
.word 02e1fh,0369dh,019bch,05ad6h,001dbh,05af7h,05ef7h,06318h
|
||
.word 02e56h,052d2h,06317h,05af4h,00935h,056d6h,05ab6h,04eb3h
|
||
.word 015f9h,06739h,05af5h,011d8h,01171h,05f16h,056f6h,056f4h
|
||
.word 01993h,046b5h,03232h,05714h,06337h,05b14h,01591h,03618h
|
||
.word 0429dh,021ddh,056d7h,02df9h,0117ah,03659h,04ad7h,021d6h
|
||
.word 00955h,042b6h,011bbh,0099ah,0265ah,0258fh,04efdh,019dfh
|
||
.word 011deh,04edfh,01dbfh,04a5fh,0361dh,015dch,01dfeh,00d9ah
|
||
.word 042b7h,0099ch,0467fh,07bbfh,07ffeh,05abfh,056dah,00dbdh
|
||
.word 025b3h,0425fh,062dfh,04ed6h,0427bh,03a34h,03eb3h,0153bh
|
||
.word 01a5ch,0263ch,02e3bh,01a1ah,015deh,06b5ah,01dd9h,019d6h
|
||
.word 0529eh,05b15h,05735h,03a1ah,03619h,06b3fh,06f3fh,03ebfh
|
||
.word 021b1h,042f7h,05adeh,0637bh,03633h,02e57h,03a1dh,0573eh
|
||
.word 03e55h,0635ch,06778h,073bdh,052f5h,00d96h,04ef5h,05334h
|
||
.word 0365ah,03e34h,04a79h,00000h,00000h,00000h,00000h,00000h
|
||
|
||
P_SMCDG:
|
||
.word 62
|
||
.word 00000h,07ff7h,05a28h,06669h,0770eh,07710h,05e8ch,03d41h
|
||
.word 04583h,03d20h,028c0h,02ce0h,024a0h,01c60h,01440h,055e6h
|
||
.word 051c5h,06248h,06ecbh,04982h,04562h,030e0h,02080h,051a4h
|
||
.word 04983h,06eaah,076ech,0628ch,06e87h,04141h,034e0h,024a0h
|
||
.word 06eefh,03900h,04a08h,06aceh,02ca0h,02880h,04140h,01840h
|
||
.word 01820h,066adh,01800h,01400h,02060h,030c0h,05582h,034e0h
|
||
.word 03900h,041c6h,05e6ah,03984h,01420h,03521h,04e29h,04641h
|
||
.word 01c60h,045e7h,0524ah,068c0h,07180h,04da4h
|
||
|
||
.END
|
||
|