3617 lines
79 KiB
NASM
3617 lines
79 KiB
NASM
.MLIB "GXMACS.LIB"
|
||
.FILE "GXLA2.ASM"
|
||
.TITLE " <<< GENERATION X -- LA UNIVERSE ROUTINES PART 2 >>>"
|
||
.WIDTH 132
|
||
.OPTION B,D,L,T
|
||
.MNOLIST
|
||
|
||
**************************************************************************
|
||
* *
|
||
* COPYRIGHT (C) 1992 MIDWAY MANUFACTURING COMPANY. *
|
||
* ALL RIGHTS RESERVED. *
|
||
* *
|
||
**************************************************************************
|
||
|
||
* GET THE SYSTEM STUFF
|
||
.INCLUDE "GX.INC"
|
||
.INCLUDE "GXCONTRL.H"
|
||
.INCLUDE "GXNONBOY.H"
|
||
.INCLUDE "IMGTBL.GLO"
|
||
.include "univtbl.glo"
|
||
.INCLUDE "GXLA2.TBL"
|
||
|
||
.BSS NASTY_FLAG,16 ;NASTY BLOOD WATER FLAG
|
||
.BSS FOUNTAIN_FLAG,16 ;WE HAVE FOUNTAIN FLAG
|
||
.BSS SPLASH_FLAG,16 ;WE HAVE SINK SPLASH FLAG
|
||
.BSS PILLAR_COUNT,16 ;PILLARS DESTROYED
|
||
.BSS KERRI_SOUND_FLAGS,32 ;UHL FOR KERRI SOUNDS
|
||
|
||
* SYMBOLS IN HERE
|
||
.DEF LA_BATHROOM_VECT_TABLE, LA_STAGE_VECT_TABLE
|
||
.DEF TRASHCAN_GUNVECT, TRASHCAN_COLLVECT, SND_PIPE_DING
|
||
.DEF MIRROR_GUNVECT, MIRROR_CVECT2, DLAMP_GUNVECT, DLAMP_COLLVECT
|
||
.DEF S_NONBOY_BATHROOM, SND_DLAMP_BREAK, SHRED_GUNVECT
|
||
.DEF SND_SLAM_STALL, SND_TCAN_SHAKE, SND_SEAT_SLAM, SND_MIRROR_CRACK
|
||
.DEF LA_DRESS_VECT_TABLE,MIRROR_COLLVECT,MC_MAKE_GLASS
|
||
.DEF FLOWERS_COLLVECT,FLOWERS_GUNVECT,MLIGHT_COLLVECT,MLIGHT_GUNVECT
|
||
.DEF PASPEAKER_COLLVECT,PASPEAKER_GUNVECT
|
||
.DEF SPOTLIGHT_COLLVECT,SPOTLIGHT_GUNVECT, PILLAR_COUNT
|
||
.DEF S_KERRI_BATHROOM
|
||
|
||
|
||
* SYMBOLS IN GXLA1.ASM
|
||
.REF LID_GUNVECT, LID_COLLVECT, CAN_GUNVECT, CAN_COLLVECT
|
||
.REF CTABLE_GUNVECT, CTABLE_COLLVECT, BOTTLE_GUNVECT, BOTTLE_COLLVECT
|
||
.REF GLASS_COLLVECT, SND_SWAT
|
||
|
||
* SYMBOLS IN GXLA3.ASM
|
||
.REF FCHAIR_GUNVECT, FCHAIR_COLLVECT, DGITAR_GUNVECT, DGITAR_COLLVECT
|
||
.REF DMIRROR_GUNVECT, DMIRROR_COLLVECT, DELITRAY_GUNVECT, DELITRAY_COLLVECT
|
||
.REF FRUIT_GUNVECT, FRUIT_COLLVECT, DOLL_GUNVECT, DOLL_COLLVECT
|
||
.REF LSWITCH_GUNVECT, PBUTTON_GUNVECT
|
||
|
||
* SYMBOLS FROM GXAFUNC.ASM
|
||
.REF A_DELETE_ZBOT
|
||
|
||
* SYMBOLS FROM GXSCROL2.ASM
|
||
.REF SND_DIR_CHOSEN
|
||
|
||
* SYMBOLS FROM GXUNIV1.ASM
|
||
.REF FRAG_ONE_CLOUD, FRAG_ONE_CLOUD_X2, GOLD_DUST_PAL
|
||
.REF F_UFRAG_STUFF_X2, FRAG_DUST_CLOUD_ANIM
|
||
|
||
***** From GXPOWER.ASM
|
||
.REF PROC_DELAYED_SBOMB, REVEAL_CD2
|
||
|
||
***** From GXPLAYER.ASM
|
||
.REF VALID_PLAYER, PLAYER_AWARD_GIRL
|
||
|
||
* SYMBOLS FROM GXNONBOY.ASM
|
||
.REF SND_BODY_THUD
|
||
|
||
* SYMBOLS FROM GXBLOOD.ASM
|
||
.REF BLOODY_BULLET_HIT
|
||
|
||
* SYMBOLS FROM GXAERO.ASM
|
||
.REF CREATE_TOM_PEE, T161_1, TOM_TURN_ANIM
|
||
|
||
* SYMBOLS FROM GXSCROL3.ASM
|
||
.REF TOMS_SIDE
|
||
|
||
* SYMBOLS FROM GXHELGA.ASM
|
||
.REF MAKE_TABLE_SOUND
|
||
|
||
* SYMBOLS FROM GXRAM.ASM
|
||
.REF VIOLENCE_LEVEL
|
||
|
||
.TEXT
|
||
|
||
**************************************************************************
|
||
* *
|
||
* ********************************************************************** *
|
||
* * *
|
||
* * ******************************************************************** *
|
||
* * * *
|
||
* * * BATHROOM DAMAGE *
|
||
* * * *
|
||
* * ******************************************************************** *
|
||
* * *
|
||
* ********************************************************************** *
|
||
* *
|
||
**************************************************************************
|
||
|
||
SND_POOP
|
||
.WORD 0F341H,64,0A14DH,0
|
||
|
||
SND_CERAMIC_CRASH
|
||
.WORD 0F328H,86,0A129H,0
|
||
SND_CERAMIC_SPLASH
|
||
.WORD 0F327H,80,0A157H,0
|
||
|
||
SND_DRIER_CRUNCH
|
||
.WORD 0F327H,60,0A147H,0
|
||
SND_DRIER_FIRE
|
||
.WORD 0F326H,86,0A33EH,0
|
||
|
||
SND_SOAPBOX_ROCKET
|
||
.WORD 0F327H,61,0A126H,0
|
||
SND_SOAPBOX_SPLAT
|
||
.WORD 0F326H,72,0A12FH,0
|
||
|
||
SND_MIRROR_SHATTER
|
||
.WORD 0F325H,64,0A32EH,0
|
||
SND_TCAN_ROCKETED
|
||
.WORD 0F324H,53,0A341H,0
|
||
SND_ROCKET_STALL
|
||
.WORD 0F323H,69,0A14AH,0
|
||
SND_FLUSH
|
||
.WORD 0F322H,260,0A150H,0
|
||
SND_HANDLE_BOING_AND_FLUSH
|
||
.WORD 0F321H,82,0A15DH,0F322H,319,0A150H,0
|
||
SND_HANDLE_BOING ;KABOOM
|
||
.WORD 0F321H,82,0A15DH,0
|
||
SND_REMOVE_SEAT
|
||
.WORD 0F321H,21,0A328H,0
|
||
SND_SLAM_STALL
|
||
.WORD 0F30EH,75,0A13BH,0
|
||
SND_SHOOT_STALL
|
||
.WORD 0F30DH,60,0A138H,0
|
||
SND_TCAN_HIT
|
||
.WORD 0F30CH,20,0A35AH,0 ;Can hit sound
|
||
SND_TCAN_SHAKE
|
||
.WORD 0F30CH,46,0A357H,0
|
||
SND_MIRROR_CRACK
|
||
.WORD 0E30BH,47,0A32BH,0
|
||
SND_DRIER_CLANG
|
||
.WORD 0F308H,57,0A135H,0
|
||
SND_VENT_CLANG
|
||
.WORD 0F308H,50,0A132H,0
|
||
SND_SEAT_SLAM
|
||
.WORD 0F308H,48,0A166H,0
|
||
SND_SEAT_CRACK
|
||
.WORD 0F307H,34,0A160H,0
|
||
SND_SOAPBOX_SPOO
|
||
.WORD 0F306H,54,0A12CH,0
|
||
SND_TPAPER_REMOVE
|
||
.WORD 0F306H,31,0A15AH,0
|
||
SND_FAUCET_DING
|
||
.WORD 0F305H,40,0A141H,0
|
||
SND_CERAMIC_DING
|
||
.WORD 0F304H,45,0A13EH,0
|
||
SND_PIPE_DING
|
||
.WORD 0F304H,39,0A144H,0
|
||
SND_SPLASH
|
||
.word 0F301H,1,05153H,0 ;Make this as a Background
|
||
SND_FOUNTAIN
|
||
.word 0F301H,1,05151H,0 ;Make this as a Background
|
||
|
||
**************************************************************************
|
||
* *
|
||
* S_NONBOY_BATHROOM - PUT SOME NONBOYS IN THE STALLS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
S_NONBOY_BATHROOM
|
||
PUSH A11
|
||
|
||
CLR A14 ;RESET BATHROOM FLAGS
|
||
MOVE A14,@NASTY_FLAG,W
|
||
MOVE A14,@FOUNTAIN_FLAG,W
|
||
MOVE A14,@SPLASH_FLAG,W
|
||
|
||
MOVE @YWORLD,A3,L
|
||
ADDI 028000H,A3 ;SET STANDING NONBOYS INTO THE GROUND
|
||
|
||
MOVI 0158000H,A5 ;UNIVERSE Y FOR POOPER
|
||
MOVE @SCROLL_FLAG,A6,L ;UNIVERSE Z
|
||
|
||
MOVI BOYS_X_TBL,A1 ;COPY RAM TABLE
|
||
CALLA COPY_ROMTBL
|
||
MOVE A0,A4
|
||
|
||
MOVE @TOMS_SIDE,A14,L ;GET THE SIDE HE'S ON
|
||
ADDI 01849AH,A14 ;ADD BASE Z POSITION (01AB3DH-FLEAOFF+2c00h)
|
||
CMP A14,A6
|
||
JRNE SNB_POOPBOY ;BR=NO TOM HERE
|
||
|
||
CALLA PICK_ENTRY ;GET STALL FOR A POOPER
|
||
SLL 12,A2
|
||
MOVE A0,A4
|
||
|
||
MOVE A2,A10
|
||
MOVE A3,A9
|
||
MOVE A6,A8
|
||
CALLA CREATE_TOM_PEE ;MAKE TOM PEE
|
||
MOVE A4,A0 ;GET STALL FOR A POOPER
|
||
SNB_POOPBOY
|
||
CALLA PICK_ENTRY ;GET STALL FOR A POOPER
|
||
SLL 12,A2
|
||
MOVE A0,A4
|
||
|
||
MOVE A2,A10
|
||
MOVE A5,A9
|
||
MOVE A6,A8
|
||
CALLR CREATE_POOPBOY ;MAKE A POOPER
|
||
|
||
MOVE A4,A0 ;GET STALL FOR A SHOOTER
|
||
CALLA PICK_ENTRY
|
||
SLL 12,A2
|
||
MOVE A0,A4
|
||
|
||
MOVE A2,A9
|
||
MOVE A3,A10
|
||
MOVE A6,A11
|
||
CREATE PID_IND,CREATE_STALLBOY ;MAKE A SHOOTER
|
||
S_NB_GETX
|
||
MOVE A4,A0
|
||
JRZ S_NB_DONE ;BR=WE'RE NOT DONE YET
|
||
CALLA PICK_ENTRY ;GET STALL
|
||
SLL 12,A2
|
||
MOVE A0,A4
|
||
|
||
MOVK 3,A0 ;GET RANDOM NUMBER FOR CONTENTS
|
||
CALLA RAND0
|
||
MOVE A0,A0
|
||
JRNZ S_NB_SHOOT ;BR=NOT A POOPER
|
||
MOVE A2,A10
|
||
MOVE A5,A9
|
||
MOVE A6,A8
|
||
CALLR CREATE_POOPBOY ;MAKE A POOPER
|
||
JRUC S_NB_GETX
|
||
S_NB_SHOOT
|
||
DEC A0
|
||
JRNZ S_NB_GETX ;BR=IT'S EMPTY
|
||
MOVE A2,A9
|
||
MOVE A3,A10
|
||
MOVE A6,A11
|
||
CREATE PID_IND,CREATE_STALLBOY ;MAKE A SHOOTER
|
||
JRUC S_NB_GETX
|
||
S_NB_DONE
|
||
PULLQ A11
|
||
JAUC SCRL_DISPATCHER
|
||
|
||
BOYS_X_TBL
|
||
.WORD -01068H,-01358H,-01618H,-018F8H,0
|
||
|
||
**************************************************************************
|
||
* *
|
||
* S_KERRI_BATHROOM - PUT KERRIS IN THE STALLS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
S_KERRI_BATHROOM
|
||
PUSH A11
|
||
|
||
CLR A14 ;RESET BATHROOM FLAGS
|
||
MOVE A14,@NASTY_FLAG,W
|
||
MOVE A14,@FOUNTAIN_FLAG,W
|
||
MOVE A14,@SPLASH_FLAG,W
|
||
|
||
MOVI [KERRI_SOUNDS, 0],A14
|
||
MOVE A14,@KERRI_SOUND_FLAGS,L
|
||
|
||
MOVE @YWORLD,A9,L
|
||
ADDI 028000H,A9 ;UNIVERSE Y
|
||
MOVE @SCROLL_FLAG,A8,L ;UNIVERSE Z
|
||
|
||
MOVI BOYS_X_TBL,A2
|
||
SKB_LUPE
|
||
MOVE *A2+,A10,W
|
||
JRZ SKB_DONE ;BR=NO MORE
|
||
|
||
SLL 12,A10
|
||
CALLR CREATE_KERRI
|
||
JRUC SKB_LUPE
|
||
SKB_DONE
|
||
PULLQ A11
|
||
JAUC SCRL_DISPATCHER
|
||
|
||
**************************************************************************
|
||
* *
|
||
* CREATE_KERRI - CREATE KERRI UNIVERSE OBJECT *
|
||
* *
|
||
* PASS: *
|
||
* A8 = UNIVERSE Z *
|
||
* A9 = UNIVERSE Y *
|
||
* A10 = UNIVERSE X *
|
||
* *
|
||
* RETURN: *
|
||
* NUTIN' *
|
||
* *
|
||
**************************************************************************
|
||
CREATE_KERRI
|
||
CALLA GET_FREE_LINK
|
||
JRZ CK_ABORT ;BR=NONE AVAILABLE
|
||
|
||
MOVE A0,A1
|
||
CALLA RANDOM
|
||
ANDI M_FLIPH,A0 ;ISOLATE FLIPH BIT ONLY
|
||
JRZ CK_NOFLIPH
|
||
SUBI 030000H,A10 ;COMPENSATE FOR FLIP
|
||
CK_NOFLIPH
|
||
ORI M_NOSCALE,A0 ;NO SCALE HERE
|
||
MOVE A0,*A1(MAP_FLAGS),W
|
||
MOVE A1,A0
|
||
|
||
MOVI KEREEK1,A14
|
||
MOVE A14,*A0(MAP_IMG),L
|
||
|
||
MOVE A0,A14
|
||
ADDI MAP_Z+020H,A14
|
||
MMTM A14,A8,A9,A10 ;SET POSITION
|
||
|
||
MOVE @UNIV_ID,A14,W ;SET ID AND OBJ
|
||
MOVE A14,*A0(MAP_ID),W
|
||
MOVI 080000000H,A14
|
||
MOVE A14,*A0(MAP_OBJ),L
|
||
CALLA INSERT_LINK
|
||
|
||
MOVK 1,A0
|
||
MOVE A0,@UNIVERR,W ;FORCE CREATION BY UPDATE_UNIV
|
||
CK_ABORT
|
||
RETS
|
||
|
||
KERRI_COVERUP_ANIM
|
||
LW 1,10
|
||
LWL 1,20|AFunc,A_KERRI_SOUND
|
||
LW KEREEK2,6
|
||
LW KEREEK3,6
|
||
LWL KEREEK4,1|AFunc,A_KERRI_POINTS
|
||
|
||
SND_OO_0
|
||
.WORD 0F380H,21,084F1H,0
|
||
SND_OO_1
|
||
.WORD 0F380H,23,084F4H,0
|
||
SND_OO_2
|
||
.WORD 0F380H,32,084F7H,0
|
||
SND_BABY
|
||
.WORD 0F381H,70,08542H,0
|
||
|
||
KERRI_SOUNDS EQU 4
|
||
|
||
KERRI_SOUND_TABLE
|
||
.LONG SND_OO_0, SND_OO_1, SND_OO_2, SND_BABY
|
||
|
||
**************************************************************************
|
||
* *
|
||
* A_KERRI_SOUND *
|
||
* *
|
||
**************************************************************************
|
||
|
||
A_KERRI_SOUND
|
||
MOVI KERRI_SOUND_TABLE,A3
|
||
MOVI KERRI_SOUND_FLAGS,A6
|
||
MOVK KERRI_SOUNDS-1,A7
|
||
CALLA MAKE_TABLE_SOUND
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* A_KERRI_POINTS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
A_KERRI_POINTS
|
||
MOVE *A8(OPLAYER),A2,L
|
||
MOVI 10000,A1
|
||
CLR A9
|
||
CALLA PRINT_SCORE ;BONUS
|
||
CALLA PLAYER_AWARD_GIRL
|
||
JAUC UNIV_MAKE_STATIC
|
||
|
||
**************************************************************************
|
||
* *
|
||
* CREATE_POOPBOY - CREATE NONBOY UNIVERSE OBJECT SITTIN' ON THE CAN *
|
||
* *
|
||
* PASS: *
|
||
* A8 = UNIVERSE Z *
|
||
* A9 = UNIVERSE Y *
|
||
* A10 = UNIVERSE X *
|
||
* *
|
||
* RETURN: *
|
||
* NUTIN' *
|
||
* *
|
||
**************************************************************************
|
||
CREATE_POOPBOY
|
||
CALLA GET_FREE_LINK
|
||
JRZ CP_ABORT ;BR=NONE AVAILABLE
|
||
|
||
MOVE A0,A1
|
||
CALLA RANDOM
|
||
ANDI M_FLIPH,A0 ;ISOLATE FLIPH BIT ONLY
|
||
JRZ CP_NOFLIPH
|
||
SUBI 030000H,A10 ;COMPENSATE FOR FLIP
|
||
CP_NOFLIPH
|
||
ORI 19 << 6,A0 ;SET OID #20
|
||
MOVE A0,*A1(MAP_FLAGS),W
|
||
MOVE A1,A0
|
||
|
||
MOVI G_B1POTDDA1,A14
|
||
MOVE A14,*A0(MAP_IMG),L
|
||
|
||
MOVE A0,A14
|
||
ADDI MAP_Z+020H,A14
|
||
MMTM A14,A8,A9,A10 ;SET POSITION
|
||
|
||
MOVE @UNIV_ID,A14,W ;SET ID AND OBJ
|
||
MOVE A14,*A0(MAP_ID),W
|
||
MOVI 080000000H,A14
|
||
MOVE A14,*A0(MAP_OBJ),L
|
||
CALLA INSERT_LINK
|
||
|
||
MOVK 1,A0
|
||
MOVE A0,@UNIVERR,W ;FORCE CREATION BY UPDATE_UNIV
|
||
CP_ABORT
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* POOPING NONBOY VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
POOPBOY_COLLVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,POOPBOY_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
POOPBOY_CVECT
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ POG_DONE ;BR=NO GOOD
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
|
||
POOPBOY_KABOOM
|
||
MOVE *A8(OULINK),A0,L
|
||
CLR A14
|
||
MOVE A14,*A8(OULINK),L
|
||
CALLA REMOVE_AND_FREE_LINK ;SEPERATE HIM FROM THE UNIVERSE
|
||
|
||
CLR A14
|
||
MOVE A14,*A8(OCVECT),L
|
||
MOVI DUMRETS,A14
|
||
MOVE A14,*A8(OGUNVECT),L
|
||
|
||
MOVI 1000,A1
|
||
CLR A9
|
||
CALLA PRINT_SCORE
|
||
|
||
MOVE A2,*A8(OPLAYER),L ;Hang on to this address
|
||
|
||
MOVI NONBOY_EXPLODE_ANIM,A1 ;NONBOY GO BOOM!
|
||
JAUC STRT_ANIM
|
||
POOPBOY_GUNVECT
|
||
SOUND1 SND_BODY_THUD
|
||
CALLA BLOODY_BULLET_HIT
|
||
|
||
MOVE *A8(OULINK),A0,L
|
||
.if DEBUG
|
||
LOCKON Z
|
||
.else
|
||
JRZ POG_DONE
|
||
.endif
|
||
MOVE *A0(MAP_IMG),A14,L
|
||
BTST B_IF_DAM,A14
|
||
JRZ POG_DONE ;BR=NO MORE GUN DAMAGE
|
||
|
||
MOVI 1000,A5
|
||
CLR A7
|
||
CLR A9 ;NO OFFSET
|
||
CALLA UNIV_DAMAGE_HANDLER ;KILL POOPER
|
||
|
||
MOVI G_B1POTDDA10,A14
|
||
MOVE A14,*A0(MAP_IMG),L ;MAKE A STATIC IMAGE
|
||
|
||
MOVK NUM_GRUNT_SNDS,A0 ;RANDOM GRUNT SOUND
|
||
CALLA RAND0
|
||
SLL 5,A0
|
||
ADDI GRUNT_HIT_TBL,A0
|
||
MOVE *A0,A0,L
|
||
CALLA ONESND_Z ;Do the volume sound
|
||
POG_DONE
|
||
RETS
|
||
|
||
POOPBOY_DAM_TBL:
|
||
.long G_B1POTDDA1+0
|
||
.word 1
|
||
.long POOPBOY_DEATH_ANIM+9
|
||
|
||
POOPBOY_DAM_TBL2:
|
||
.long G_B1POTDDA2+0
|
||
.word 1
|
||
.long POOPBOY_DEATH_ANIM2+9
|
||
|
||
POOPBOY_SITUP_ANIM
|
||
LWLL 1,30|AFunc,A_SET_MAP_IMG+2,POOPBOY_DAM_TBL+M_IF_DAM
|
||
POOPBOY_SITUP_NOW_ANIM
|
||
LWLL G_B1POTDDA2,20|AFunc,A_SET_MAP_IMG+2,POOPBOY_DAM_TBL2+M_IF_DAM
|
||
LWLL 1,40|AFunc,A_SOUNDZ+2,SND_POOP
|
||
LWLL G_B1POTDDA1,1|AFunc,A_SET_MAP_IMG+2,POOPBOY_DAM_TBL+M_IF_DAM
|
||
LWL 1,1|AFunc,PULL_ANIM
|
||
|
||
POOPBOY_DEATH_ANIM
|
||
LW G_B1POTDDA2,3
|
||
POOPBOY_DEATH_ANIM2
|
||
LW G_B1POTDDA3,6
|
||
LW G_B1POTDDA9,6
|
||
LWL G_B1POTDDA10,1|AFunc,PULL_ANIM
|
||
|
||
**************************************************************************
|
||
* *
|
||
* STALL DOOR VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
STALLDOOR_COLLVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,STALLDOOR_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
STALLDOOR_CVECT
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ SDG_DONE ;BR=NO GOOD
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
|
||
SOUNDZ SND_ROCKET_STALL
|
||
|
||
MMTM SP,B1,B2,B4,B5,B6,B8,B9,b10 ;MAKE STALL DOOR FRAGMENTS
|
||
|
||
MOVI 030000H,A0
|
||
CLR A3
|
||
CALLA PreFrag_Box
|
||
MOVI -0FFH,B9
|
||
MOVI -01H,B10
|
||
MOVI FRAG_U40,B14
|
||
CALLA Fragger
|
||
|
||
MOVE *A8(OIMG),A1,L
|
||
MOVE *A1(ICMAP),*A0(FPDATA),L ;SET PALETTE
|
||
|
||
MMFM SP,B1,B2,B4,B5,B6,B8,B9,b10
|
||
|
||
MOVI 500,A5 ;DEFAULT POINTS
|
||
CMPI STDOR6,A1
|
||
JRNE SDC_DAM ;BR=NO EXTRA POINTS
|
||
MOVI 5000,A5 ;EXTRA POINTS FOR DIFFICULTY
|
||
SDC_DAM
|
||
MOVK M_NOMORE|M_LASTFRM|M_FLASHOBJ,A7
|
||
CLR A9 ;NO OFFSET
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
JRUC SDG_GO
|
||
STALLDOOR_GUNVECT
|
||
|
||
MOVE *A8(OIMG),A14,L
|
||
CMPI STDOR6,A14
|
||
JREQ SDG_DONE ;BR=BOYS DOOR IS OPEN
|
||
CMPI gSTDOR6,A14
|
||
JREQ SDG_DONE ;BR=GIRLS DOOR IS OPEN
|
||
|
||
SOUNDZ SND_SHOOT_STALL
|
||
|
||
MOVI [59-121, 67-37],A3
|
||
MOVI [64-121, 75-37],A4
|
||
CALLA BOX_CHECK_OBJ
|
||
JRZ SDG_NOLOCK
|
||
|
||
MOVI 5000+1,A5
|
||
MOVK M_NEXTFRM|M_FLASHOBJ,A7 ;FLASH
|
||
JRUC SDG_DAM
|
||
SDG_NOLOCK
|
||
MOVI 500+1,A5 ;500 POINTS
|
||
MOVK M_FLASHOBJ,A7 ;FLASH
|
||
SDG_DAM
|
||
CLR A9 ;NO OFFSET
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
JRZ SDG_DONE
|
||
|
||
MOVI STALLDOOR_DAM_TBL+M_IF_DAM,A1 ;DEFAULT NEW DAMAGE TABLE
|
||
MOVE *A8(OIMG),A14,L
|
||
CMPI STDOR1,A14
|
||
JREQ SDC_SET_DAM_TBL ;BR=USE THIS TABLE FOR THE BOYS
|
||
MOVI gSTALLDOOR_DAM_TBL+M_IF_DAM,A1 ;NEW GIRLS DAMAGE TABLE
|
||
SDC_SET_DAM_TBL
|
||
MOVE *A8(OULINK),A0,L
|
||
MOVE A1,*A0(MAP_IMG),L
|
||
SDG_GO
|
||
MOVE *A8(OXVAL),A7,L
|
||
|
||
MOVI FGLIST,A0
|
||
; MOVE A0,A8
|
||
|
||
MOVI G_B1POTDDA1,A3 ;CHANGE THIS
|
||
MOVI G_B1SHOOTA1,A4 ;OR THIS
|
||
MOVI T161_1,A6 ;OR THIS
|
||
MOVI KEREEK1,A10 ;OR THIS
|
||
|
||
MOVE A8,A9 ;SAVE STALLDOOR OBJECT
|
||
|
||
MOVI 040000H,A5 ;MAXIMUM X DIFFERENCE
|
||
|
||
JRUC SDG_NEXT
|
||
SDG_LUPE
|
||
MOVE *A8(OIMG),A14,L ;CHECK IMAGES
|
||
CMP A3,A14
|
||
JRNE SDG_OTHER ;BR=NOT THE POOPER
|
||
|
||
MOVE *A8(OXVAL),A14,L
|
||
SUB A7,A14
|
||
ABS A14
|
||
CMP A5,A14
|
||
JRGT SDG_NEXT ;BR=OUT OF X DIFFERENCE
|
||
|
||
MOVI POOPBOY_SITUP_ANIM,A1
|
||
JAUC STRT_ANIM
|
||
SDG_OTHER
|
||
CMP A6,A14
|
||
JRNE SDG_OTHER_OTHER ;BR=NOT TOM
|
||
|
||
MOVE *A8(OXVAL),A14,L
|
||
SUB A7,A14
|
||
ABS A14
|
||
CMP A5,A14
|
||
JRGT SDG_NEXT ;BR=OUT OF X DIFFERENCE
|
||
|
||
MOVI TOM_TURN_ANIM,A1
|
||
CALLA STRT_ANIM
|
||
|
||
MOVE *A9(OFLAGS),A14,W
|
||
BTST B_ANIM,A14
|
||
JRZ SDG_DONE ;BR=NOT ANIMATING
|
||
|
||
MOVE A9,A8
|
||
MOVI STALLDOOR_STICK_SLAM_ANIM,A1
|
||
JAUC STRT_ANIM
|
||
|
||
SDG_OTHER_OTHER
|
||
CMP A10,A14
|
||
JRNE SDG_OTHER_OTHER_OTHER ;BR=NOT KERRI
|
||
|
||
MOVE *A8(OXVAL),A14,L
|
||
SUB A7,A14
|
||
ABS A14
|
||
CMP A5,A14
|
||
JRGT SDG_NEXT ;BR=OUT OF X DIFFERENCE
|
||
|
||
MOVE A2,*A8(OPLAYER),L
|
||
|
||
MOVI KERRI_COVERUP_ANIM,A1
|
||
CALLA STRT_ANIM
|
||
|
||
MOVE *A9(OFLAGS),A14,W
|
||
BTST B_ANIM,A14
|
||
JRZ SDG_DONE ;BR=NOT ANIMATING
|
||
|
||
MOVE A9,A8
|
||
MOVI STALLDOOR_STICK_SLAM_ANIM,A1
|
||
JAUC STRT_ANIM
|
||
|
||
SDG_OTHER_OTHER_OTHER
|
||
CMP A4,A14
|
||
JRNE SDG_NEXT ;BR=NOT THE SHOOTER
|
||
|
||
MOVE *A8(OXVAL),A14,L
|
||
SUB A7,A14
|
||
ABS A14
|
||
CMP A5,A14
|
||
JRGT SDG_NEXT ;BR=OUT OF X DIFF
|
||
|
||
; MOVB *A8(OFLAGS+B_ANIM-7),A14
|
||
; JRN SDG_DONE ;BR=IT'S ANIMATING
|
||
|
||
MOVI NONBOY_STALL_SHOOT_ANIM,A1
|
||
CALLA STRT_ANIM ;START ANIMATION
|
||
MOVK 30,A14
|
||
MOVB A14,*A8(AnimSlp) ;INITIAL NAP
|
||
RETS
|
||
SDG_NEXT
|
||
MOVE *A8,A8,L
|
||
CMP A0,A8
|
||
JRNE SDG_LUPE ;BR=NOT END OF LIST
|
||
SDG_DONE
|
||
RETS
|
||
|
||
STALLDOOR_DAM_TBL
|
||
.long STDOR6
|
||
.word 128
|
||
.long JDSMASH+8
|
||
|
||
gSTALLDOOR_DAM_TBL
|
||
.LONG gSTDOR6
|
||
.word 128
|
||
.long gJDSMASH+8
|
||
|
||
STALLDOOR_STICK_SLAM_ANIM
|
||
LW STDOR2,2
|
||
LW STDOR3,3
|
||
LW STDOR4,3
|
||
LW STDOR5,3
|
||
LWLL STDOR6,3|AFunc,A_SOUNDZ+2,SND_SLAM_STALL
|
||
LWL 1,1|AFunc,PULL_ANIM
|
||
|
||
**************************************************************************
|
||
* *
|
||
* TOILET BASIN VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
TBAS_COLLVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,TBAS_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
TBAS_CVECT
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ THG_DONE
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
|
||
MMTM SP,B1,B2,B4,B5,B6,B8,B9,b10 ;MAKE TOILET BOWL FRAGMENTS
|
||
|
||
MOVI 040000H,A0
|
||
CLR A3
|
||
CALLA PreFrag_Up
|
||
MOVI -0FFH,B9
|
||
MOVI -01H,B10
|
||
MOVI -010000H,B3 ;MIN OXVEL
|
||
MOVI 010000H,B4 ;MAX OXVEL
|
||
MOVI FRAG_U20,B14
|
||
CALLA Fragger
|
||
|
||
MOVI XJONP1a,A14
|
||
MOVE A14,*A0(FPDATA),L ;SET PALETTE
|
||
|
||
MMFM SP,B1,B2,B4,B5,B6,B8,B9,b10
|
||
|
||
CALLR CERAMIC_EXPLOSION
|
||
|
||
MOVI [-23,-11],A10
|
||
MOVK 1,A11
|
||
CREATE PID_IND,REVEAL_PROCK
|
||
MOVI [-23,15],A10
|
||
CREATE PID_IND,REVEAL_PROCK
|
||
|
||
MOVE *A8(OXVAL),A7,L
|
||
|
||
MOVI FGLIST,A0
|
||
MOVE A0,A8
|
||
|
||
MOVI TOILEV1,A3 ;CHANGE THIS
|
||
MOVI dTLEVER1sq,A4 ;OR THIS
|
||
|
||
MOVI TOILID1,A9 ;CHANGE THIS
|
||
MOVI dTOILID1sq,A10 ;OR THIS
|
||
|
||
MOVI (OID_UNIV+(19 << 2)) & ~MASK_SUPP,A11 ;CHANGE THIS (POOPER)
|
||
|
||
MOVK 7,A5
|
||
|
||
JRUC TBC_NEXT
|
||
TBC_LUPE
|
||
MOVE *A8(OIMG),A1,L ;CHECK IMAGES
|
||
MOVE *A8(AnimScr),A14,L
|
||
; BTST 0,A5
|
||
; JRZ TBC_OTHER ;BR=WE FOUND THIS ALREADY
|
||
CMP A4,A14
|
||
JREQ TBC_HAND ;BR=NOT THE ANIM
|
||
CMP A3,A1
|
||
JRNE TBC_OTHER ;BR=NOT THE IMAGE
|
||
|
||
MOVE *A8(OCVECT),A14,L
|
||
JRZ TBC_NEXT ;BR=IT'S ALREADY FUCKED
|
||
TBC_HAND
|
||
MOVE *A8(OXVAL),A14,L
|
||
SUB A7,A14
|
||
ABS A14
|
||
CMPI 010000H,A14
|
||
JRGT TBC_NEXT ;BR=NOT CLOSE ENOUGH
|
||
|
||
DEC A5
|
||
MMTM SP,A0,A3,A4,A5,A7,A8,A9,A10,A11
|
||
CLR A5 ;NO SCORE
|
||
CALLR THAND_KABOOM ;FUCK UP TOILET HANDLE
|
||
MMFM SP,A0,A3,A4,A5,A7,A8,A9,A10,A11
|
||
JRUC TBC_NEXT
|
||
|
||
TBC_OTHER
|
||
; BTST 1,A5
|
||
; JRZ TBC_OTHER_OTHER ;BR=WE FOUND THIS ALREADY
|
||
CMP A10,A14
|
||
JREQ TBC_SEAT ;BR=NOT THE ANIM
|
||
CMP A9,A1
|
||
JRNE TBC_OTHER_OTHER ;BR=NOT THE IMAGE
|
||
|
||
MOVE *A8(OCVECT),A14,L
|
||
JRZ TBC_NEXT ;BR=IT'S ALREADY FUCKED
|
||
TBC_SEAT
|
||
MOVE *A8(OXVAL),A14,L
|
||
SUB A7,A14
|
||
ABS A14
|
||
CMPI 010000H,A14
|
||
JRGT TBC_NEXT ;BR=NOT CLOSE ENOUGH
|
||
|
||
SUBK 2,A5
|
||
MMTM SP,A0,A3,A4,A5,A7,A8,A9,A10,A11
|
||
CLR A5 ;NO SCORE
|
||
CALLR TSEAT_KABOOM ;FUCK UP TOILET SEAT
|
||
MMFM SP,A0,A3,A4,A5,A7,A8,A9,A10,A11
|
||
JRUC TBC_NEXT
|
||
|
||
TBC_OTHER_OTHER
|
||
MOVE *A8(OID),A14,L ;CHECK IMAGES
|
||
ANDI MASK_TYPE+MASK_ID,A14
|
||
CMP A11,A14
|
||
JRNE TBC_NEXT ;BR=NOT THE OID
|
||
|
||
MOVE *A8(OULINK),A14,L
|
||
JRZ TBC_NEXT ;BR=IT'S ALREADY FUCKED
|
||
|
||
MOVE *A8(OXVAL),A14,L
|
||
SUB A7,A14
|
||
ABS A14
|
||
CMPI 030000H,A14
|
||
JRGT TBC_NEXT ;BR=NOT CLOSE ENOUGH
|
||
|
||
SUBK 4,A5
|
||
MMTM SP,A0,A3,A4,A5,A7,A8,A9,A10,A11
|
||
CALLR POOPBOY_KABOOM ;FUCK UP POOPER
|
||
|
||
MOVE @NASTY_FLAG,A14,W
|
||
JRNZ TBC_NO_NASTY ;BR=WE'RE ALREADY NASTY
|
||
MOVK 1,A14
|
||
MOVE A14,@NASTY_FLAG,W ;MAKE NASTY BLOOD WATER
|
||
CREATE PID_IND,NASTY_FADE_PROC
|
||
TBC_NO_NASTY
|
||
|
||
MMFM SP,A0,A3,A4,A5,A7,A8,A9,A10,A11
|
||
|
||
TBC_NEXT
|
||
MOVE A5,A5
|
||
JRZ TBG_DONE ;WE GOT 'EM ALL
|
||
MOVE *A8,A8,L
|
||
CMP A0,A8
|
||
JRNE TBC_LUPE ;BR=NOT END OF LIST
|
||
RETS
|
||
|
||
TBAS_GUNVECT
|
||
MOVI TOILET_BOX_TBL,A0
|
||
CALLA TABLE_BOX_CHECK
|
||
JRZ TBG_DONE
|
||
|
||
MOVI SND_PIPE_DING,A0
|
||
DEC A1
|
||
JAZ ONESND_Z
|
||
MOVI SND_CERAMIC_DING,A0
|
||
JAUC ONESND_Z
|
||
|
||
TBG_DONE
|
||
RETS
|
||
|
||
TOILET_BOX_TBL
|
||
.LONG [0,0],[31,42] ;PIPES
|
||
.LONG [32,0],[65,42] ;CERAMIC
|
||
.LONG -1
|
||
|
||
**************************************************************************
|
||
* *
|
||
* CERAMIC_EXPLOSION - MAKE A SINK OR TOILET EXPLODE AND SPEW WATER *
|
||
* *
|
||
* PASS: *
|
||
* A8 = UNIVERSE SINK OR TOILET OBJECT *
|
||
* *
|
||
**************************************************************************
|
||
|
||
CERAMIC_EXPLOSION
|
||
MOVI 500,A5
|
||
MOVK M_NOMORE|M_LASTFRM|M_FLASHOBJ,A7
|
||
CLR A9 ;NO OFFSET
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
|
||
SOUNDZ SND_CERAMIC_CRASH
|
||
SOUNDZ SND_CERAMIC_SPLASH
|
||
|
||
CALLA GET_FREE_LINK
|
||
JRZ CE_DONE
|
||
|
||
MOVE *A8(OCTRL),A14,L ;MATCH FLIP
|
||
ANDI M_FLIPH,A14 ;ISOLATE FLIPH BIT ONLY
|
||
ORI M_BF_NOVECT,A14
|
||
MOVE A14,*A0(MAP_FLAGS),W
|
||
|
||
MOVE A8,A14
|
||
ADDI OXVAL,A14 ;GET POSITION
|
||
MMFM A14,A3,A4,A5 ;A5,A4,A3 = OXVAL, OYVAL, OZVAL
|
||
|
||
MOVI WATER_SPOUT_ANIM+M_IF_SEQ,A14
|
||
MOVE A14,*A0(MAP_IMG),L ;WATER ANIMATION
|
||
|
||
MOVE A5,*A0(MAP_X),L
|
||
MOVE A4,*A0(MAP_Y),L
|
||
DEC A3
|
||
MOVE A3,*A0(MAP_Z),L
|
||
|
||
MOVE @UNIV_ID,A14,W ;SET ID AND OBJ
|
||
MOVE A14,*A0(MAP_ID),W
|
||
MOVI 080000000H,A14
|
||
MOVE A14,*A0(MAP_OBJ),L
|
||
CALLA INSERT_LINK
|
||
|
||
MOVK 1,A0
|
||
MOVE A0,@UNIVERR,W ;FORCE CREATION BY UPDATE_UNIV
|
||
|
||
MOVE @FOUNTAIN_FLAG,A14,W
|
||
JRNZ CE_DONE
|
||
|
||
SOUND1 SND_BGND3_OFF ;TURN OFF SPLASH
|
||
SOUND1 SND_FOUNTAIN
|
||
|
||
MOVK 1,A14
|
||
MOVE A14,@FOUNTAIN_FLAG,W
|
||
CE_DONE
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* NASTY_FADE_PROC - MAKE THE NASTY BLOODY WATER *
|
||
* *
|
||
**************************************************************************
|
||
|
||
NASTY_FADE_PROC
|
||
SLEEP 10
|
||
|
||
MOVI WSPOUT1b,A0 ;FADE TO RED WATER
|
||
|
||
MOVE @VIOLENCE_LEVEL,A14,W
|
||
DEC A14
|
||
JRP NFP_RED ;BR = Violence is high
|
||
JRN NFP_DONE
|
||
|
||
MOVK M_DONT_FADE_GREEN,A10
|
||
JRUC NFP_FADE
|
||
|
||
NFP_RED
|
||
MOVK M_DONT_FADE_RED,A10
|
||
NFP_FADE
|
||
MOVI NASTY_FADE_DOWN,A11
|
||
CALLA FADE_ONLY
|
||
|
||
SLEEP 90
|
||
|
||
MOVI WSPOUT1b,A0 ;FADE TO CLEAR WATER
|
||
MOVI NASTY_FADE_UP,A11
|
||
CALLA FADE_ONLY
|
||
|
||
SLEEP 128+3
|
||
|
||
NFP_DONE
|
||
CLR A14 ;WE'RE READY FOR MORE NASTY H 0!
|
||
MOVE A14,@NASTY_FLAG,W ; 2
|
||
|
||
DIE
|
||
|
||
NASTY_FADE_DOWN
|
||
.WORD 96,64,48,32,24,16,12,8,6,4,2,1,0,-1
|
||
|
||
NASTY_FADE_UP
|
||
.WORD 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16
|
||
.WORD 17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32
|
||
.WORD 33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48
|
||
.WORD 49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64
|
||
.WORD 1+64, 2+64, 3+64, 4+64, 5+64, 6+64, 7+64, 8+64, 9+64,10+64,11+64,12+64,13+64,14+64,15+64,16+64
|
||
.WORD 17+64,18+64,19+64,20+64,21+64,22+64,23+64,24+64,25+64,26+64,27+64,28+64,29+64,30+64,31+64,32+64
|
||
.WORD 33+64,34+64,35+64,36+64,37+64,38+64,39+64,40+64,41+64,42+64,43+64,44+64,45+64,46+64,47+64,48+64
|
||
.WORD 49+64,50+64,51+64,52+64,53+64,54+64,55+64,56+64,57+64,58+64,59+64,60+64,61+64,62+64,63+64,64+64
|
||
.WORD -1
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* TOILET HANDLE VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
THAND_COLLVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,THAND_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
THAND_CVECT
|
||
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ THG_DONE ;BR=NO GOOD
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
|
||
MOVI 1000,A5
|
||
SOUNDZ SND_HANDLE_BOING_AND_FLUSH
|
||
JRUC THAND_GO
|
||
THAND_KABOOM
|
||
SOUNDZ SND_HANDLE_BOING
|
||
THAND_GO
|
||
MOVK M_NOMORE|M_LASTFRM|M_FLASHOBJ,A7
|
||
CLR A9 ;NO OFFSET
|
||
JAUC UNIV_DAMAGE_HANDLER
|
||
|
||
THAND_GUNVECT
|
||
SOUNDZ SND_FAUCET_DING
|
||
|
||
MOVI 1000,A1
|
||
MOVE *A8(OGTIME),A14,L
|
||
MOVE @WAVEIRQS,A9,L
|
||
SUB A9,A14
|
||
CMPI -30,A14
|
||
JAGT SCORE ;BR=NO HANDLE MOTION
|
||
MOVE A9,*A8(OGTIME),L ;NEW LAST GUN HIT TIME
|
||
|
||
SOUNDZ SND_FLUSH
|
||
|
||
MOVI 1000+1,A5
|
||
MOVK M_FLASHOBJ,A7 ;FLASH
|
||
CLR A9 ;NO OFFSET
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
|
||
MOVE *A8(OULINK),A0,L
|
||
MOVE *A0(MAP_IMG),A1,L ;WE DON'T WANT TO BE HERE
|
||
SRL 4,A1 ;CLEAR FLAGS FOR STATIC IMAGE
|
||
SLL 4,A1
|
||
SUBI 030H,A1 ;BACK ONE ENTRY
|
||
ORI M_IF_DAM,A1 ;RESTORE DAMAGE FLAG
|
||
MOVE A1,*A0(MAP_IMG),L ;BACK TO WHERE WE WERE
|
||
THG_DONE
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* TOILET SEAT VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
TSEAT_COLLVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,TSEAT_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
TSEAT_CVECT
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ TSG_DONE ;BR=NO GOOD
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
|
||
MOVI 500,A5
|
||
TSEAT_KABOOM
|
||
MOVK M_NOMORE|M_LASTFRM|M_FLASHOBJ,A7
|
||
CLR A9
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
|
||
SOUNDZ SND_REMOVE_SEAT
|
||
|
||
MOVI -040000H,A14 ;MAKE IT FLY
|
||
MOVE A14,*A8(OYVEL),L
|
||
MOVI 02000H,A14
|
||
MOVE A14,*A8(OYACCEL),W
|
||
MOVI -0100H,A14
|
||
MOVE A14,*A8(OZVEL),L
|
||
MOVE *A8(OFLAGS),A14,W
|
||
ORI M_GCOLL,A14 ;CLEAR GROUND COLL FLAG
|
||
MOVE A14,*A8(OFLAGS),W
|
||
|
||
MOVI GROUND_COLLVECT,A14 ;NEW VECTORS
|
||
MOVE A14,*A8(OCVECT),L
|
||
MOVI DUMRETS,A14
|
||
MOVE A14,*A8(OGUNVECT),L
|
||
|
||
MOVE *A8(OULINK),A0,L
|
||
CLR A14
|
||
MOVE A14,*A8(OULINK),L
|
||
CALLA REMOVE_AND_FREE_LINK ;REMOVE FROM UNIVERSE
|
||
|
||
MOVE *A8(OXVAL),A7,L
|
||
|
||
MOVI FGLIST,A0
|
||
; MOVE A0,A8
|
||
|
||
MOVI (OID_UNIV+(19 << 2)) & ~MASK_SUPP,A3 ;CHANGE THIS
|
||
|
||
JRUC TSC_NEXT
|
||
TSC_LUPE
|
||
MOVE *A8(OID),A14,L ;CHECK IMAGES
|
||
ANDI MASK_TYPE+MASK_ID,A14
|
||
CMP A3,A14
|
||
JRNE TSC_NEXT ;BR=NOT THE POOPBOY OID
|
||
|
||
MOVE *A8(OULINK),A14,L
|
||
JRZ TSC_NEXT ;BR=HE'S ALREADY FUCKED!
|
||
|
||
MOVE *A8(OXVAL),A14,L
|
||
SUB A7,A14
|
||
ABS A14
|
||
CMPI 020000H,A14
|
||
JRGT TSC_NEXT ;BR=NOT CLOSE ENOUGH
|
||
|
||
JRUC POOPBOY_KABOOM
|
||
|
||
TSC_NEXT
|
||
MOVE *A8(OBLINK),A8,L
|
||
CMP A0,A8
|
||
JRNE TSC_LUPE ;BR=NOT END OF LIST
|
||
RETS
|
||
|
||
TSEAT_GUNVECT
|
||
SOUNDZ SND_SEAT_CRACK
|
||
|
||
MOVI 500,A1
|
||
MOVE *A8(OGTIME),A14,L
|
||
MOVE @WAVEIRQS,A9,L
|
||
SUB A9,A14
|
||
CMPI -30,A14
|
||
JAGT SCORE ;BR=NO SEAT ACTION
|
||
MOVE A9,*A8(OGTIME),L ;NEW LAST GUN HIT TIME
|
||
|
||
MOVI 500+1,A5 ;500 POINTS
|
||
MOVK M_FLASHOBJ,A7 ;FLASH
|
||
CLR A9 ;NO OFFSET
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
|
||
MOVE *A8(OULINK),A0,L
|
||
MOVE *A0(MAP_IMG),A1,L ;WE DON'T WANT TO BE HERE
|
||
SRL 4,A1 ;CLEAR FLAGS FOR STATIC IMAGE
|
||
SLL 4,A1
|
||
SUBI 030H,A1 ;BACK ONE ENTRY
|
||
ORI M_IF_DAM,A1 ;RESTORE DAMAGE FLAG
|
||
MOVE A1,*A0(MAP_IMG),L ;BACK TO WHERE WE WERE
|
||
TSG_DONE
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* TOILET PAPER VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
TPAPER_COLLVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,TPAPER_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
TPAPER_FLYING_COLLVECT
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,TPAPER_FLYING_CVECT
|
||
WWL OID_GRND,0FFFFH,DELETE_OBJ
|
||
WL 0,DUMCRETS
|
||
|
||
TPAPER_FLYING_CVECT
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
TPAPER_FLYING_GUNVECT
|
||
MOVI 10000,A1
|
||
CLR A9
|
||
CALLA PRINT_SCORE ;BONUS
|
||
|
||
SOUNDZ SND_TPAPER_REMOVE
|
||
|
||
CLR A14
|
||
MOVE A14,*A8(OXVEL),L ;STOP THE ROLL
|
||
MOVE A14,*A8(OYVEL),L
|
||
MOVE A14,*A8(OZVEL),L
|
||
|
||
MMTM SP,B1,B2,B4,B5,B6,B8,B9,b10 ;MAKE TOILET PAPER FRAGMENTS
|
||
|
||
MOVI 020000H,A0
|
||
CLR A3
|
||
CALLA PreFrag_Center
|
||
MOVI -020000H,B7 ;MIN OYVEL
|
||
MOVI -010000H,B8 ;MAX OYVEL
|
||
MOVI FRAG_PAPER,B14
|
||
CALLA Fragger
|
||
|
||
MOVI TOIPAPR1p,A14
|
||
MOVE A14,*A0(FPDATA),L ;SET PALETTE
|
||
|
||
MMFM SP,B1,B2,B4,B5,B6,B8,B9,b10
|
||
|
||
JAUC DEL_PROC_AND_OBJ ;DELETE ROLL AND FLASH PROCESS
|
||
|
||
TPAPER_CVECT
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ TPG_DONE
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
|
||
MOVE *A8(OULINK),A0,L
|
||
CLR A14
|
||
MOVE A14,*A8(OULINK),L
|
||
CALLA REMOVE_AND_FREE_LINK ;REMOVE FROM UNIVERSE
|
||
CALLA DELETE_OBJ ; AND DELETE
|
||
|
||
MMTM SP,B1,B2,B4,B5,B6,B8,B9,b10 ;MAKE TOILET PAPER FRAGMENTS
|
||
|
||
MOVI 02C000H,A0
|
||
CLR A3
|
||
CALLA PreFrag_Up
|
||
MOVI -0A000H,B3 ;MIN OXVEL
|
||
MOVI -04000H,B4 ;MAX OXVEL
|
||
MOVI FRAG_PAPER,B14
|
||
CALLA Fragger
|
||
|
||
MOVI TOIPAPR1p,A14
|
||
MOVE A14,*A0(FPDATA),L ;SET PALETTE
|
||
|
||
MMFM SP,B1,B2,B4,B5,B6,B8,B9,b10
|
||
JRUC TPG_FIND_POOPBOY ;MAKE POOPER LOOK UP!
|
||
|
||
TPAPER_GUNVECT
|
||
MOVI 500,A5 ;500 POINTS
|
||
MOVK M_FLASHOBJ,A7 ;FLASH
|
||
CLR A9 ;NO OFFSET
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
|
||
SOUNDZ SND_TPAPER_REMOVE
|
||
|
||
MOVI -08000H,A14 ;MAKE IT FLY
|
||
MOVE A14,*A8(OXVEL),L
|
||
MOVI -030000H,A14
|
||
MOVE A14,*A8(OYVEL),L
|
||
MOVI 02000H,A14
|
||
MOVE A14,*A8(OYACCEL),W
|
||
MOVI -0100H,A14
|
||
MOVE A14,*A8(OZVEL),L
|
||
MOVE *A8(OFLAGS),A14,W
|
||
ORI M_GCOLL,A14 ;CLEAR GROUND COLL FLAG
|
||
MOVE A14,*A8(OFLAGS),W
|
||
|
||
MOVE *A8(OCTRL),A14,W
|
||
XORI M_FLIPH,A14
|
||
MOVE A14,*A8(OCTRL),W
|
||
|
||
MOVI TPAPER_FLYING_COLLVECT,A14 ;NEW VECTORS
|
||
MOVE A14,*A8(OCVECT),L
|
||
MOVI TPAPER_FLYING_GUNVECT,A14
|
||
MOVE A14,*A8(OGUNVECT),L
|
||
|
||
MOVE *A8(OULINK),A0,L
|
||
CLR A14
|
||
MOVE A14,*A8(OULINK),L
|
||
CALLA REMOVE_AND_FREE_LINK ;REMOVE FROM UNIVERSE
|
||
TPG_FIND_POOPBOY
|
||
MOVE *A8(OXVAL),A7,L
|
||
|
||
MOVI FGLIST,A0
|
||
MOVE A0,A8
|
||
|
||
MOVI G_B1POTDDA1,A3 ;CHANGE THIS
|
||
|
||
JRUC TPG_NEXT
|
||
TPG_LUPE
|
||
MOVE *A8(OIMG),A14,L ;CHECK IMAGES
|
||
CMP A3,A14
|
||
JRNE TPG_NEXT ;BR=NOPE
|
||
|
||
MOVE *A8(OXVAL),A14,L
|
||
SUB A7,A14
|
||
JRNN TPG_NEXT
|
||
CMPI -0148000H,A14
|
||
JRLT TPG_NEXT ;BR=NOT CLOSE ENOUGH
|
||
|
||
MOVI POOPBOY_SITUP_NOW_ANIM,A1 ;LOOK UP
|
||
JAUC STRT_ANIM
|
||
TPG_NEXT
|
||
MOVE *A8,A8,L
|
||
CMP A0,A8
|
||
JRNE TPG_LUPE ;BR=NOT END OF LIST
|
||
|
||
TPG_DONE
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* PAPER FRAGMENT STUFF *
|
||
* *
|
||
**************************************************************************
|
||
|
||
FRAG_PAPER
|
||
.long FRAG_PAPER_ANIM,F_PAPER_STUFF
|
||
.word OID_JUNK,(5 << 11) + (1 << 6) + (FRGBOG+FRGGCOL+FRGNOFLY+FRGNOFLP)
|
||
.long FRAG_PAPER_ANIM,F_PAPER_STUFF
|
||
.word OID_JUNK,(5 << 11) + (1 << 6) + (FRGBOG+FRGGCOL+FRGNOFLY+FRGNOFLP)
|
||
.long 0
|
||
|
||
FRAG_PAPER_ANIM
|
||
LW TISS1,2
|
||
LW TISS2,2
|
||
LWL TISS3,2|AFunc,A_CHECK_PAPER
|
||
.long 0
|
||
FRAG_PAPER_FLOAT_ANIM
|
||
LWL TISS1,0|AFunc,A_DELETE_ZBOT
|
||
LW TISS2,0
|
||
LW TISS3,0
|
||
LW TISS2,0
|
||
LWL TISS1,0|AFunc,A_SLOW_PAPER
|
||
.long 0
|
||
|
||
**************************************************************************
|
||
* *
|
||
* A_SLOW_PAPER - SLOW DOWN THE PAPER ANIMATION *
|
||
* *
|
||
* PASS: *
|
||
* A8 = OBJECT *
|
||
* RETURN: *
|
||
* NUTIN' *
|
||
* *
|
||
**************************************************************************
|
||
|
||
A_SLOW_PAPER
|
||
MOVB *A8(AnimSLP),A14
|
||
CMPK 6,A14
|
||
JRGE ASP_DONE ;BR=WE'RE GOIN' THE SLOWEST
|
||
INC A14
|
||
MOVB A14,*A8(AnimSLP)
|
||
ASP_DONE
|
||
RETS
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* A_CHECK_PAPER - CHECK IF PAPER SHOULD START FLOATING *
|
||
* *
|
||
* PASS: *
|
||
* A8 = OBJECT *
|
||
* RETURN: *
|
||
* NUTIN' *
|
||
* *
|
||
**************************************************************************
|
||
|
||
A_CHECK_PAPER
|
||
MOVE *A8(OYVEL),A14,L
|
||
CMPI 02000H,A14
|
||
JRLT ACP_DONE ;BR=DON'T FLOAT YET
|
||
|
||
MOVE *A8(OCTRL),A14,W
|
||
ANDNI M_FLIPV,A14
|
||
MOVE A14,*A8(OCTRL),W
|
||
|
||
CLR A14
|
||
MOVE A14,*A8(OYACCEL),W
|
||
MOVE A14,*A8(OXVEL),L
|
||
|
||
MOVI FRAG_PAPER_FLOAT_ANIM,A14
|
||
MOVE A14,*A8(AnimFrm),L
|
||
MOVE A14,*A8(AnimScr),L
|
||
|
||
MOVK 2,A14
|
||
MOVB A14,*A8(AnimSLP)
|
||
ACP_DONE
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* F_PAPER_STUFF - DO STUFF *
|
||
* *
|
||
* A0 = Ptr to un-inserted object. *
|
||
* *
|
||
* Note: Frag funcs must preserve A8-A11 and all B-File regs. *
|
||
* *
|
||
**************************************************************************
|
||
|
||
F_PAPER_STUFF
|
||
MOVE @RAND,A1,W
|
||
ANDI M_FLIPH,A1 ;GET FLIPH ONLY
|
||
|
||
MOVE *A0(OYVEL),A14,L
|
||
JRNN FPS_GO
|
||
ORI M_FLIPV,A1
|
||
FPS_GO
|
||
MOVE *A0(OCTRL),A14,W
|
||
OR A1,A14
|
||
MOVE A14,*A0(OCTRL),W
|
||
|
||
MOVI 01000H,A14
|
||
MOVE A14,*A0(OYACCEL),W
|
||
|
||
MOVI GROUND_COLLVECT,A14
|
||
MOVE A14,*A0(OCVECT),L ;Set up chunk with Vectors
|
||
|
||
move A0,A2
|
||
MOVE *A13(FPDATA),A0,L ;GET PALETTE
|
||
calla GETFPAL
|
||
JRNZ FPS_PAL ;BR = WE HAVE PALETTE!
|
||
CLR A0
|
||
FPS_PAL
|
||
move A0,*A2(OPAL),W
|
||
move A2,A0
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* SINK VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
SINK_COLLVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,SINK_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
SINK_CVECT
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ S_DONE
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
|
||
CALLR FIND_FAUCET_WATER
|
||
JRZ S_EXPLODE
|
||
|
||
MOVE A0,A1
|
||
MOVE *A1(OULINK),A0,L
|
||
CLR A14
|
||
MOVE A14,*A1(OULINK),L
|
||
CALLA REMOVE_AND_FREE_LINK
|
||
MOVE A1,A0
|
||
CALLA DELOBJ
|
||
S_EXPLODE
|
||
CALLR CERAMIC_EXPLOSION
|
||
|
||
MOVI [-8,-15],A10
|
||
MOVK 1,A11
|
||
CREATE PID_IND,REVEAL_PROCK
|
||
MOVI [-8,17],A10
|
||
CREATE PID_IND,REVEAL_PROCK
|
||
|
||
MMTM SP,B1,B2,B4,B5,B6,B8,B9,b10 ;MAKE SINK FRAGMENTS
|
||
|
||
MOVI 040000H,A0
|
||
CLR A3
|
||
CALLA PreFrag_Center
|
||
MOVI -0FFH,B9
|
||
MOVI -01H,B10
|
||
MOVI -020000H,B3 ;MIN OXVEL
|
||
MOVI 020000H,B4 ;MAX OXVEL
|
||
MOVI FRAG_U20,B14
|
||
CALLA Fragger
|
||
|
||
MOVI NSINK,A14
|
||
MOVE A14,*A0(FPDATA),L ;SET PALETTE
|
||
|
||
MMFM SP,B1,B2,B4,B5,B6,B8,B9,b10
|
||
|
||
MOVI FAUCET_INIT,A5 ;MAKE A FAUCET
|
||
CALLA CREATE_OBJ
|
||
JRZ S_DONE ;BR=WHOOPS!
|
||
|
||
MOVE A8,A14
|
||
ADDI OXVAL,A14 ;GET POSITION
|
||
MMFM A14,A3,A4,A5 ;A5,A4,A3 = OXVAL, OYVAL, OZVAL
|
||
|
||
MOVE A0,A14
|
||
ADDI OZVAL+020H,A14 ;SET POSITION
|
||
MMTM A14,A3,A4,A5 ;A5,A4,A3 = OXVAL, OYVAL, OZVAL
|
||
|
||
MOVI -030000H,A14 ;MAKE IT FLY
|
||
MOVE A14,*A0(OYVEL),L
|
||
MOVI 02000H,A14
|
||
MOVE A14,*A0(OYACCEL),W
|
||
MOVI -0100H,A14
|
||
MOVE A14,*A0(OZVEL),L
|
||
JAUC INSOBJ
|
||
|
||
SINK_GUNVECT
|
||
MOVI SINK_BOX_TBL,A0
|
||
CALLA TABLE_BOX_CHECK
|
||
JRZ S_DONE
|
||
|
||
MOVE A1,A0
|
||
DEC A0
|
||
SLL 5,A0
|
||
ADDI SINK_SND_TBL,A0
|
||
MOVE *A0,A0,L
|
||
CALLA ONESND_Z
|
||
|
||
CMPK 1,A1
|
||
JRNE S_DONE ;BR=NOT THE FAUCET
|
||
|
||
CLR A5
|
||
; MOVK M_FLASHOBJ,A7 ;FLASH
|
||
CLR A7
|
||
CLR A9 ;NO OFFSET
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
JRZ S_DONE ;BR=WE ALREADY HAVE WATER
|
||
|
||
; CALLR FIND_FAUCET_WATER
|
||
; JRNZ S_DONE
|
||
|
||
CALLA GET_FREE_LINK
|
||
JRZ S_DONE ;BR=NONE AVAILABLE
|
||
|
||
MOVE *A8(OCTRL),A14,L ;MATCH FLIP
|
||
ANDI M_FLIPH,A14 ;ISOLATE FLIPH BIT ONLY
|
||
ORI M_BF_NOVECT,A14
|
||
MOVE A14,*A0(MAP_FLAGS),W
|
||
|
||
MOVE A8,A14
|
||
ADDI OXVAL,A14 ;GET POSITION
|
||
MMFM A14,A3,A4,A5 ;A5,A4,A3 = OXVAL, OYVAL, OZVAL
|
||
|
||
MOVI FAUCET_WATER_ANIM+M_IF_SEQ,A14
|
||
MOVE A14,*A0(MAP_IMG),L ;WATER ANIMATION
|
||
|
||
MOVE A5,*A0(MAP_X),L
|
||
MOVE A4,*A0(MAP_Y),L
|
||
DEC A3
|
||
MOVE A3,*A0(MAP_Z),L
|
||
|
||
MOVE @UNIV_ID,A14 ;SET ID AND OBJ
|
||
MOVE A14,*A0(MAP_ID),W
|
||
MOVI 080000000H,A14
|
||
MOVE A14,*A0(MAP_OBJ),L
|
||
CALLA INSERT_LINK
|
||
|
||
MOVK 1,A0
|
||
MOVE A0,@UNIVERR,W ;FORCE CREATION BY UPDATE_UNIV
|
||
|
||
MOVE @FOUNTAIN_FLAG,A14,W
|
||
JRNZ S_DONE
|
||
MOVE @SPLASH_FLAG,A14,W
|
||
JRNZ S_DONE
|
||
|
||
SOUND1 SND_SPLASH
|
||
S_DONE
|
||
RETS
|
||
|
||
SINK_BOX_TBL
|
||
.LONG [0,23],[13,39] ;FAUCET
|
||
.LONG [14,0],[37,63] ;CERAMIC
|
||
.LONG [38,0],[61,63] ;PIPES
|
||
.LONG -1
|
||
|
||
SINK_SND_TBL
|
||
.LONG SND_FAUCET_DING,SND_CERAMIC_DING,SND_PIPE_DING
|
||
|
||
**************************************************************************
|
||
* *
|
||
* FIND_FAUCET_WATER - FIND THE FAUCET WATER OBJECT FOR THE SINK *
|
||
* *
|
||
* PASS: *
|
||
* A8 = SINK OBJECT *
|
||
* *
|
||
* RETURN: *
|
||
* A0 = FAUCET WATER OBJECT, IF NONE, THEN A0 = 0 AND Z IS SET *
|
||
* *
|
||
**************************************************************************
|
||
|
||
FIND_FAUCET_WATER
|
||
MOVE *A8(OXVAL),A7,L
|
||
|
||
MOVI FGLIST,A1
|
||
; MOVE A1,A0
|
||
MOVE A8,A0
|
||
|
||
MOVI FAUCET_WATER_ANIM,A3 ;FIND THIS
|
||
|
||
JRUC FFW_NEXT
|
||
FFW_LUPE
|
||
MOVE *A0(AnimScr),A14,L ;CHECK ANIMS
|
||
CMP A3,A14
|
||
JRNE FFW_NEXT ;BR=NO ANIM MATCH
|
||
MOVE *A0(OXVAL),A14,L
|
||
CMP A7,A14
|
||
JRNE FFW_NEXT ;BR=NOT THE SAME X
|
||
MOVE A0,A0 ;FOUND IT!
|
||
RETS
|
||
FFW_NEXT
|
||
MOVE *A0(OBLINK),A0,L
|
||
CMP A1,A0
|
||
JRNE FFW_LUPE ;BR=NOT END OF LIST
|
||
CLR A0 ;NO FAUCET WATER
|
||
RETS
|
||
|
||
|
||
FAUCET_WATER_ANIM
|
||
LW SWAb1,4
|
||
LW SWAb2,4
|
||
LW SWAb3,4
|
||
.long 0
|
||
|
||
FAUCET_INIT
|
||
.LONG FAWCET1, GROUND_COLLVECT
|
||
.WORD OID_JUNK, DMAWNZ, M_GCOLL, 0
|
||
.LONG C_STRTANIM
|
||
.LONG FAUCET_FLY_ANIM
|
||
|
||
FAUCET_FLY_ANIM
|
||
LW 1,4
|
||
LW FAWCET2,4
|
||
LW FAWCET3,4
|
||
LW FAWCET4,4
|
||
LW FAWCET5,4
|
||
LW FAWCET6,4
|
||
LW FAWCET7,4
|
||
.long 0
|
||
|
||
WATER_SPOUT_ANIM
|
||
LW WAWA1,3
|
||
LW WAWA3,3
|
||
LW WAWA5,3
|
||
LW WAWA7,3
|
||
LW WAWA9,3
|
||
LW WAWA11,3
|
||
LW WAWA13,3
|
||
LW WAWA15,3
|
||
LW WAWA17,3
|
||
LW WAWA19,3
|
||
LW WAWA21,3
|
||
.long 0
|
||
|
||
**************************************************************************
|
||
* *
|
||
* DRIER VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
DRIER_COLLVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,DRIER_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
DRIER_CVECT
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ DRG_DONE ;BR=NO GOOD
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
|
||
MOVK M_NOMORE|M_LASTFRM|M_FLASHOBJ,A7 ;LAST FRAME AND FLASH
|
||
JRUC DRIER_GO
|
||
DRIER_GUNVECT
|
||
SOUNDZ SND_DRIER_CLANG
|
||
MOVK M_NOMORE|M_FLASHOBJ,A7 ;FLASH
|
||
DRIER_GO
|
||
MOVI 500,A5 ;500 POINTS
|
||
MOVI [-8,0],A9 ;OFFSET FROM CENTER OF OBJECT
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
JRNC DRG_DONE
|
||
|
||
MMTM SP,B1,B2,B4,B5,B6,B8,B9,b10
|
||
|
||
MOVI 040000H,A0
|
||
CLR A3
|
||
CALLA PreFrag_Center
|
||
MOVI -0FFH,B9 ;MIN Z VEL
|
||
MOVI -01H,B10 ;MAX Z VEL
|
||
MOVI FRAG_U20,B14
|
||
CALLA Fragger
|
||
|
||
MOVI HANDRY1,A14
|
||
MOVE A14,*A0(FPDATA),L ;SET PALETTE
|
||
|
||
MMFM SP,B1,B2,B4,B5,B6,B8,B9,b10
|
||
|
||
CALLA MAKE_ONE_EXPLOSION
|
||
|
||
CALLA GET_FREE_LINK
|
||
JRZ DRG_CAUSE_DAMAGE ;BR=NONE AVAILABLE
|
||
|
||
MOVE *A8(OCTRL),A14,W ;DO THE FLIPH THING
|
||
ANDI M_FLIPH,A14
|
||
MOVE A14,*A0(MAP_FLAGS),W
|
||
|
||
MOVE A8,A14
|
||
ADDI OXVAL,A14 ;GET POSITION
|
||
MMFM A14,A3,A4,A5 ;A5,A4,A3 = OXVAL, OYVAL, OZVAL
|
||
|
||
MOVI DRIER_FIRE_ANIM+M_IF_SEQ,A14
|
||
MOVE A14,*A0(MAP_IMG),L ;FIRE ANIMATION
|
||
|
||
MOVE A5,*A0(MAP_X),L
|
||
MOVE A4,*A0(MAP_Y),L
|
||
INC A3
|
||
MOVE A3,*A0(MAP_Z),L
|
||
|
||
MOVE @UNIV_ID,A14 ;SET ID AND OBJ
|
||
MOVE A14,*A0(MAP_ID),W
|
||
MOVI 080000000H,A14
|
||
MOVE A14,*A0(MAP_OBJ),L
|
||
CALLA INSERT_LINK
|
||
|
||
MOVK 1,A0
|
||
MOVE A0,@UNIVERR,W ;FORCE CREATION BY UPDATE_UNIV
|
||
|
||
SOUNDZ SND_DRIER_CRUNCH
|
||
SOUNDZ SND_DRIER_FIRE
|
||
|
||
DRG_CAUSE_DAMAGE
|
||
MOVE *A8(OXVAL),A7,L
|
||
|
||
MOVI FGLIST,A0
|
||
; MOVE A0,A8
|
||
|
||
MOVI HDRYVENT1,A3 ;CHANGE THIS
|
||
|
||
JRUC DRG_NEXT
|
||
DRG_LUPE
|
||
MOVE *A8(OIMG),A14,L ;CHECK IMAGES
|
||
CMP A3,A14
|
||
JRNE DRG_NEXT
|
||
MOVE *A8(OXVAL),A14,L
|
||
SUB A7,A14
|
||
ABS A14
|
||
CMPI 010000H,A14
|
||
JRGT DRG_NEXT
|
||
|
||
MOVB *A8(OFLAGS+B_ANIM-7),A14
|
||
JRN DRG_NEXT ;BR=IT'S ANIMATING
|
||
|
||
CLR A5 ;NO SCORE
|
||
CLR A3 ;NO CURSOR POSITION, FLY RANDOM
|
||
JRUC DRY_VENT_KABOOM
|
||
DRG_NEXT
|
||
MOVE *A8(OBLINK),A8,L
|
||
CMP A0,A8
|
||
JRNE DRG_LUPE ;BR=NOT END OF LIST
|
||
DRG_DONE
|
||
RETS
|
||
|
||
DRIER_FIRE_ANIM
|
||
LW HDFLAM1,3
|
||
LW HDFLAM2,3
|
||
LW HDFLAM3,3
|
||
LW HDFLAM4,3
|
||
LW HDFLAM5,3
|
||
LW HDFLAM6,3
|
||
LW HDFLAM7,3
|
||
.long 0
|
||
|
||
**************************************************************************
|
||
* *
|
||
* DRIER VENT VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
OVENTSCORE EQU OU_ODATA ;UHL NEXT SCORE
|
||
|
||
DRY_VENT_COLLVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,DRY_VENT_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
;DRY_VENT_FLY_COLLVECT
|
||
; WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
; WWL OID_PEXPLOSION,~MASK_PLAYER,DRY_VENT_FLY_CVECT
|
||
; WL 0,DUMCRETS
|
||
|
||
DRY_VENT_CVECT
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ DV_ABORT ;BR = NO GOOD
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
|
||
CLR A3 ;NO CURSOR POSITION, FLY RANDOM
|
||
DRY_VENT_GUNVECT
|
||
MOVI 500,A5 ;500 POINTS
|
||
DRY_VENT_KABOOM
|
||
MOVK M_FLASHOBJ,A7 ;FLASH
|
||
CLR A9 ;NO OFFSET
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
|
||
MOVI DRIER_VENT_FLY,A0
|
||
JAUC THING_FLY_START
|
||
DV_ABORT
|
||
RETS
|
||
|
||
* .WORD OFLYSCORE, OFLYSCOREINC *
|
||
* .LONG OFLYHITSND, OFLYYVEL *
|
||
* .WORD OFLYXSLL, OYACCEL, OZVEL *
|
||
|
||
DRIER_VENT_FLY
|
||
.LONG [1000, 1000], SND_VENT_CLANG, -020000H
|
||
.WORD 13, 02000H, -080H
|
||
|
||
**************************************************************************
|
||
* *
|
||
* MIRROR VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
MIRROR_COLLVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,MIRROR_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
MIRROR_CVECT
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ MG_DONE ;BR=NO GOOD
|
||
MIRROR_CVECT2
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
MOVI 500,A5 ;500 POINTS
|
||
MOVK M_NOMORE|M_LASTFRM|M_FLASHOBJ,A7 ;LAST FRAME AND FLASH
|
||
CLR A9 ;NO OFFSET
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
JRNC MG_SANS_GLASS
|
||
MC_MAKE_GLASS
|
||
SOUNDZ SND_MIRROR_SHATTER
|
||
|
||
MMTM SP,B1,B2,B4,B5,B6,B8,B9,b10 ;MAKE FRAGMENTS
|
||
|
||
MOVI SHARDPAL1,A5 ;SILVER PALETTE
|
||
MOVE @WAVE_UNIV,A9,L
|
||
CMPI GXOBOY2,A9
|
||
JRNE MC_FRAG ;BR=NOT THE BAR UNIVERSE
|
||
CLR A9 ;FLAG BAR UNIVERSE
|
||
MOVI SHARDPAL2,A5 ;GOLD PALETTE
|
||
MC_FRAG
|
||
MOVI 040000H,A0
|
||
CLR A3
|
||
CALLA PreFrag_Box
|
||
MOVI -0FFH,B9 ;MIN Z VEL
|
||
MOVI -01H,B10 ;MAX Z VEL
|
||
MOVI -010000H,B8 ;MAXIMUM Y VELOCITY
|
||
MOVI FRAG_S20,B14
|
||
CALLA Fragger
|
||
|
||
MOVE A5,*A0(FPDATA),L ;SET PALETTE
|
||
|
||
MOVE *A8(OIHOFF),A14,W
|
||
JRNZ MC_FRAG_DONE ;BR=DON'T MAKE SMALL PIECES
|
||
|
||
MOVI FRAG_SS10,B14
|
||
CALLA Fragger
|
||
|
||
MOVE A5,*A0(FPDATA),L ;SET PALETTE
|
||
MC_FRAG_DONE
|
||
MMFM SP,B1,B2,B4,B5,B6,B8,B9,b10
|
||
|
||
MOVI MIRROR_SHATTER_INIT,A5 ;LET'S MAKE SOME SHARDS
|
||
CALLA CREATE_OBJ
|
||
JRZ MG_SANS_GLASS ;BR=OOPS!
|
||
|
||
MOVE *A8(OCTRL),A14,W
|
||
ANDI M_FLIPH|M_FLIPV,A14
|
||
MOVE *A0(OCTRL),A1,W
|
||
OR A14,A1
|
||
MOVE A1,*A0(OCTRL),W
|
||
|
||
BTST B_FLIPV,A1
|
||
JRZ MC_SET_POS ;BR=NO VERTICAL FLIP
|
||
MOVI 93 << 15,A14
|
||
MOVE A14,*A0(OGRNDOFF),L ;OFFSET ABOVE DA GROUND
|
||
MC_SET_POS
|
||
MOVE *A8(OXVAL),*A0(OXVAL),L ;SET POSITION
|
||
MOVE *A8(OYVAL),*A0(OYVAL),L
|
||
MOVE *A8(OZVAL),A14,L
|
||
DEC A14
|
||
MOVE A14,*A0(OZVAL),L
|
||
MOVI 04000H,A14 ;SET GRAVITY
|
||
MOVE A14,*A0(OYACCEL),W
|
||
MOVE A8,A3
|
||
MOVE A0,A8
|
||
|
||
MOVE A9,A9
|
||
JRNZ MC_INS ;BR=NOT THE BAR UNIVERSE
|
||
MOVI MFRAGS1c,A0 ;CHANGE TO GOLD PALETTE
|
||
CALLA CHANGE_PAL
|
||
MC_INS
|
||
CALLA INSERT_OBJ
|
||
MOVE A3,A8
|
||
RETS
|
||
|
||
MIRROR_GUNVECT
|
||
; MOVE *A8(OULINK),A0,L
|
||
; MOVB *A0(MAP_ID+8),A14 ;GET CURRENT DAMAGE LEVEL
|
||
; JRZ MG_GO ;BR=CRACK DA MIRROR
|
||
;
|
||
; MOVE *A8(OGTIME),A14,L
|
||
; MOVE @WAVEIRQS,A0,L
|
||
; SUB A14,A0
|
||
; CMPI 60,A0
|
||
; JRLT MG_DONE ;BR=DON'T BREAK YET
|
||
;MG_GO
|
||
SOUNDZ SND_MIRROR_CRACK
|
||
|
||
MOVI 500,A5 ;500 POINTS
|
||
MOVK M_NOMORE|M_FLASHOBJ,A7 ;FLASH
|
||
CLR A9 ;NO OFFSET
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
JRC MC_MAKE_GLASS ;BR=LAST DAMAGE FRAME
|
||
|
||
; MOVE @WAVEIRQS,A14,L
|
||
; MOVE A14,*A8(OGTIME),L ;CRACK TIME
|
||
|
||
MG_SANS_GLASS
|
||
MG_DONE
|
||
RETS
|
||
|
||
MIRROR_SHATTER_INIT
|
||
.LONG MRRFRAG1, GLASS_COLLVECT
|
||
.WORD OID_JUNK, DMAWNZ, M_GCOLL, 0
|
||
.LONG 0
|
||
|
||
MFRAGS1c:
|
||
.word 63
|
||
.word 07c20h,06ad1h,07f53h,03524h,028c1h,024a0h,01c40h,07711h
|
||
.word 07311h,01c60h,04186h,02080h,03d65h,02ce2h,0626dh,04dc9h
|
||
.word 0560ah,03922h,04deah,05209h,045a7h,03103h,04165h,0562ch
|
||
.word 045a8h,0560bh,0668dh,04187h,06ed0h,04166h,03944h,06ef1h
|
||
.word 03d64h,072f1h,0668fh,0562bh,05e6dh,049c9h,0520bh,05e4dh
|
||
.word 06acfh,06ed1h,06ef0h,0628eh,0668eh,066afh,0628dh,066b0h
|
||
.word 07733h,072f0h,0520ah,07712h,05a4ch,06ecfh,05a4dh,05a2bh
|
||
.word 05a2ch,06ef2h,07313h,07f53h,07f53h,07733h,07b53h
|
||
|
||
**************************************************************************
|
||
* *
|
||
* SOAPBOX VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
SOAPBOX_COLLVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,SOAPBOX_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
SOAPBOX_CVECT
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ SOG_DONE
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
|
||
SOUNDZ SND_SOAPBOX_ROCKET
|
||
SOUNDZ SND_SOAPBOX_SPLAT
|
||
|
||
MMTM SP,B1,B2,B4,B5,B6,B8,B9,b10 ;MAKE FRAGMENTS
|
||
|
||
MOVI 040000H,A0
|
||
CLR A3
|
||
CALLA PreFrag_Box
|
||
MOVI -0FFH,B9 ;MIN Z VEL
|
||
MOVI -01H,B10 ;MAX Z VEL
|
||
MOVI FRAG_U5,B14
|
||
CALLA Fragger
|
||
|
||
MOVI SOAPDIS1,A14
|
||
MOVE A14,*A0(FPDATA),L ;SET PALETTE
|
||
|
||
MMFM SP,B1,B2,B4,B5,B6,B8,B9,b10
|
||
|
||
MOVI 500,A5 ;500 POINTS
|
||
MOVK M_NOMORE|M_LASTFRM|M_FLASHOBJ,A7 ;LAST FRAME AND FLASH
|
||
CLR A9 ;NO OFFSET
|
||
JAUC UNIV_DAMAGE_HANDLER
|
||
SOAPBOX_GUNVECT
|
||
|
||
MOVE *A8(OGTIME),A14,L
|
||
MOVE @WAVEIRQS,A9,L
|
||
SUB A9,A14
|
||
CMPI -30,A14
|
||
JRGT SOG_DONE ;BR=NO SPOO!
|
||
|
||
SOUNDZ SND_SOAPBOX_SPOO
|
||
|
||
CALLA UNIV_FLASH
|
||
|
||
MOVI SPOO_INIT,A5 ;LET'S SPOO SOAP!
|
||
CALLA CREATE_OBJ
|
||
JRZ SOG_DONE ;BR=SPOOPS!
|
||
MOVE A9,*A8(OGTIME),L ;NEW LAST GUN HIT TIME
|
||
MOVE *A8(OXVAL),*A0(OXVAL),L ;SET POSITION
|
||
MOVE *A8(OYVAL),*A0(OYVAL),L
|
||
MOVE *A8(OZVAL),A14,L
|
||
DEC A14
|
||
MOVE A14,*A0(OZVAL),L
|
||
JAUC INSOBJ
|
||
SOG_DONE
|
||
RETS
|
||
|
||
SPOO_INIT
|
||
.LONG SOSPURT1, 0
|
||
.WORD OID_JUNK, DMAWNZ, 0, 0
|
||
.LONG C_STRTANIM
|
||
.LONG SPOO_ANIM
|
||
|
||
SPOO_ANIM
|
||
LW 1,4
|
||
LW SOSPURT2,4
|
||
LW SOSPURT3,4
|
||
LW SOSPURT4,4
|
||
LW SOSPURT5,4
|
||
LW SOSPURT6,4
|
||
LW SOSPURT7,30
|
||
LWL 1,1|AFunc,DELETE_OBJ
|
||
|
||
**************************************************************************
|
||
* *
|
||
* TRASH CAN VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
TRASHCAN_COLLVECT
|
||
WWL OID_GRND,0FFFFH,TRASHCAN_GRND_CVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,TRASHCAN_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
TRASHCAN_GRND_CVECT
|
||
MOVE *A8(OYVEL),A14,L
|
||
JRN TGC_ONGRND ;BR=GOING UP
|
||
JRZ TGC_ONGRND ;BR=STOPPED
|
||
SRA 2,A14
|
||
CMPI [1,0],A14
|
||
JRLT TGC_ONGRND ;BR=BELOW MINIMUM VELOCITY
|
||
NEG A14 ;REVERSE VELOCITY
|
||
MOVE A14,*A8(OYVEL),L
|
||
RETS
|
||
TGC_ONGRND
|
||
|
||
;DON'T DO THIS (SEE NOTE BELOW)
|
||
; MOVI CAN_GUNVECT,A14
|
||
; MOVE A14,*A8(OGUNVECT),L
|
||
|
||
CLR A14 ;STOP IT!
|
||
MOVE A14,*A8(OXVEL),L
|
||
MOVE A14,*A8(OYVEL),L
|
||
MOVE A14,*A8(OZVEL),L
|
||
MOVE A14,*A8(OYACCEL),W
|
||
MOVE *A8(OFLAGS),A14,W
|
||
ANDNI M_GCOLL,A14 ;CLEAR GROUND COLL FLAG
|
||
MOVE A14,*A8(OFLAGS),W
|
||
|
||
CALLA SET_ONGRND
|
||
|
||
MOVE *A8(OULINK),A0,L ;UPDATE RAM LINK POSITION
|
||
MOVE *A8(OXVAL),*A0(MAP_X),L
|
||
MOVE *A8(OYVAL),*A0(MAP_Y),L
|
||
MOVE *A8(OZVAL),*A0(MAP_Z),L
|
||
|
||
MOVE @RAND,A3,W ;RANDOM FLIPH
|
||
ANDI M_FLIPH,A3 ;ISOLATE FLIPH BIT ONLY
|
||
MOVE *A8(OCTRL),A1,W
|
||
XOR A3,A1
|
||
MOVE A1,*A8(OCTRL),W
|
||
ANDI M_FLIPH,A1 ;UPDATE FLIPH IN MAP_FLAGS
|
||
MOVE *A0(MAP_FLAGS),A14,W
|
||
ANDNI M_FLIPH,A14
|
||
OR A1,A14
|
||
MOVE A14,*A0(MAP_FLAGS),W
|
||
|
||
PUSH B0
|
||
CALLA UNLINK_LINK ;RESORT UNIVERSE LINK
|
||
CALLA INSERT_LINK
|
||
PULLQ B0
|
||
|
||
MOVI TRASHCAN_LAND_ANIM,A1 ;CAN LANDING ON GROUND ANIM
|
||
JAUC STRT_ANIM
|
||
TRASHCAN_CVECT
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ TG_DONE
|
||
|
||
; MOVB *A8(OFLAGS+B_ANIM-7),A14
|
||
; JRN TG_DONE ;IT'S ANIMATING LEAVE IT ALONE!
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
|
||
MOVI 500,A5 ;500 POINTS
|
||
MOVK M_LASTFRM|M_FLASHOBJ,A7 ;LAST FRAME AND FLASH
|
||
CLR A9 ;NO OFFSET
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
.if DEBUG
|
||
LOCKON NC
|
||
.else
|
||
JRNC TG_DONE
|
||
.endif
|
||
SOUNDZ SND_TCAN_ROCKETED
|
||
|
||
;DON'T DO THIS MAKE IT AT LEAST FLASH AND GIVE SOME POINTS!
|
||
; MOVI DUMRETS,A14
|
||
; MOVE A14,*A8(OGUNVECT),L
|
||
|
||
MOVI TRASHCAN_DAM_TBL+M_IF_DAM,A14 ;RESET DAMAGE TABLE
|
||
MOVE *A8(OULINK),A0,L
|
||
MOVE A14,*A0(MAP_IMG),L
|
||
|
||
; SETF 4,0,0 ;FIELD 0 IS 4 BITS
|
||
; CLR A4 ;RESET COUNT FOR NEW FRAME
|
||
; MOVE A4,*A0(MAP_OBJ),0 ;SAVE CURRENT COUNT
|
||
; SETF 16,1,0 ;WORD SIGN EXTEND
|
||
|
||
MOVI 04000H,A14 ;SET VELOCITIES AND ACCEL
|
||
MOVE A14,*A8(OYACCEL),W ;GRAVITY
|
||
MOVI -060000H,A0
|
||
MOVI -080000H,A1
|
||
CALLA RANGERND
|
||
MOVE A0,*A8(OYVEL),L ;RANDOM INITIAL Y VELOCITY
|
||
MOVI 18 << 13,A0
|
||
MOVI -18 << 13,A1
|
||
CALLA RANGERND
|
||
MOVE A0,*A8(OXVEL),L ;RANDOM INITIAL X VELOCITY
|
||
MOVI -060H,A14
|
||
MOVE A14,*A8(OZVEL),L ;Z VELOCITY
|
||
MOVE *A8(OFLAGS),A14,W
|
||
ORI M_GCOLL,A14 ;SET GROUND COLL FLAG
|
||
MOVE A14,*A8(OFLAGS),W
|
||
RETS
|
||
TRASHCAN_GUNVECT
|
||
SOUNDZ SND_TCAN_HIT
|
||
|
||
MOVB *A8(OFLAGS+B_ANIM-7),A14
|
||
JRNN TG_STILL ;BR=IT'S NOT ANIMATING
|
||
|
||
MOVE *A8(AnimScr),A14,L
|
||
CMPI dGCANSPIN1sq,A14
|
||
JREQ TG_DONE ;BR=WE'RE SPINNING
|
||
|
||
MOVK 1,A14 ;SET ANIMATION LOOP FLAG
|
||
MOVB A14,*A8(AnimLoop)
|
||
RETS
|
||
TG_STILL
|
||
CLR A14
|
||
MOVB A14,*A8(AnimLoop)
|
||
|
||
MOVI 500,A5 ;500 POINTS
|
||
MOVK M_FLASHOBJ,A7 ;FLASH
|
||
CLR A9 ;NO OFFSET
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
|
||
MOVE *A8(OULINK),A0,L ;BACK UP ONE DAMAGE ENTRY
|
||
|
||
; SETF 4,0,0 ;FIELD 0 IS 4 BITS
|
||
; CLR A4 ;RESET COUNT FOR NEW FRAME
|
||
; MOVE A4,*A0(MAP_OBJ),0 ;SAVE CURRENT COUNT
|
||
; SETF 16,1,0 ;WORD SIGN EXTEND
|
||
|
||
MOVE *A0(MAP_IMG),A1,L ;WE DON'T WANT TO BE HERE
|
||
SRL 4,A1 ;CLEAR FLAGS FOR STATIC IMAGE
|
||
SLL 4,A1
|
||
SUBI 030H,A1 ;BACK ONE ENTRY
|
||
ORI M_IF_DAM,A1 ;RESTORE DAMAGE FLAG
|
||
MOVE A1,*A0(MAP_IMG),L ;BACK TO WHERE WE WERE
|
||
TG_DONE
|
||
RETS
|
||
|
||
TRASHCAN_DAM_TBL:
|
||
.long BCANL4+0
|
||
.word 1
|
||
.long TRASHCAN_HIT_ANIM+1
|
||
.word 128
|
||
.long dBCANSPIN1sq+9
|
||
|
||
TRASHCAN_LAND_ANIM
|
||
LW BCANL1,2
|
||
LW BCANL2,2
|
||
LW BCANL3,2
|
||
LW BCANL4,2
|
||
TRASHCAN_HIT_ANIM
|
||
LWLL BCANL3,2|AFunc,A_SOUNDZ+2,SND_TCAN_SHAKE
|
||
LW BCANL4,2
|
||
LW BCANL3,2
|
||
LWL BCANL4,2|AFunc,PULL_ANIM
|
||
|
||
**************************************************************************
|
||
* *
|
||
* ********************************************************************** *
|
||
* * *
|
||
* * ******************************************************************** *
|
||
* * * *
|
||
* * * STAGE DAMAGE *
|
||
* * * *
|
||
* * ******************************************************************** *
|
||
* * *
|
||
* ********************************************************************** *
|
||
* *
|
||
**************************************************************************
|
||
|
||
;**************************************************************************
|
||
;* *
|
||
;* AU_CHECK_EROK - CHECK IF EROK SHOULD DIE *
|
||
;* *
|
||
;**************************************************************************
|
||
;
|
||
;AU_CHECK_EROK
|
||
; MOVE @SCROLL_FLAG,A14,W
|
||
; JRZ EROKG_DONE ;BR = NOPE. NOT YET
|
||
; CLR A2
|
||
;
|
||
; ;CONTINUE WITH EROK_GUNVECT
|
||
;
|
||
;**************************************************************************
|
||
;* *
|
||
;* EROK VECTOR *
|
||
;* *
|
||
;**************************************************************************
|
||
;
|
||
;EROK_GUNVECT
|
||
; CLR A5
|
||
; MOVK M_NOMORE,A7 ;NO MORE DAMAGE
|
||
; CLR A9 ;NO OFFSET
|
||
; CALLA UNIV_DAMAGE_HANDLER
|
||
; JRNC EROKG_DONE ;BR=ALREADY TRASHED. HA! HA!
|
||
; MOVK 1,A14
|
||
; MOVE A14,@SCROLL_FLAG,W
|
||
; SOUND1 SND_EROK_YELL
|
||
;EROKG_DONE
|
||
; RETS
|
||
;
|
||
;SND_EROK_YELL
|
||
; .WORD 0F310H,40,08206H,0
|
||
|
||
**************************************************************************
|
||
* *
|
||
* ROPE LADDER VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
RLADDER_COLLVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,RLADDER_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
RLADDER_CVECT
|
||
MOVE @BLACKOUT,A14,W
|
||
JRNZ RG_DONE ;BR=LIGHTS OUT! BLACKOUT!
|
||
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ RG_DONE
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
|
||
RLADDER_GUNVECT
|
||
MOVE @BLACKOUT,A14,W
|
||
JRNZ RG_DONE ;BR=LIGHTS OUT! BLACKOUT!
|
||
|
||
MOVI 500,A5 ;500 POINTS
|
||
MOVK M_NOMORE|M_FLASHOBJ,A7 ;FLASH
|
||
CLR A9 ;NO OFFSET
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
MOVK 1,A14
|
||
MOVE A14,@SCROLL_FLAG,W
|
||
RG_DONE
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* SEATS VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
SEATS_COLLVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,SEATS_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
SEATS_CVECT
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ SEATS_DONE
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
|
||
CALLA STOP_ENEMIES
|
||
|
||
MMTM SP,B1,B2,B4,B5,B6,B8,B9,b10 ;MAKE FRAGMENTS
|
||
|
||
MOVI 040000H,A0
|
||
CLR A3
|
||
CALLA PreFrag_Up
|
||
MOVI -0FFH,B9 ;MIN Z VEL
|
||
MOVI -01H,B10 ;MAX Z VEL
|
||
MOVI FRAG_U20,B14
|
||
CALLA Fragger
|
||
|
||
MOVE *A8(OIMG),A1,L
|
||
MOVE *A1(ICMAP),*A0(FPDATA),L ;SET PALETTE
|
||
|
||
MMFM SP,B1,B2,B4,B5,B6,B8,B9,b10
|
||
|
||
MOVI 1000,A5 ;POINTS
|
||
MOVK M_NOMORE|M_LASTFRM|M_FLASHOBJ,A7 ;LAST AND FLASH
|
||
CLR A9
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
|
||
SOUNDZ SND_SEATS_EXPLODE
|
||
|
||
MOVI [-108-17,108+17],A11 ;X OFFSETS
|
||
MOVI [-80,46],A9 ;Y OFFSETS
|
||
MOVK 5,A1 ;Z OFFSET
|
||
JAUC OBJ_KILL_ENEMIES
|
||
SEATS_GUNVECT
|
||
MOVE @SCROLL_FLAG,A14,L
|
||
SRL 4,A14
|
||
SLL 4,A14
|
||
CMP A8,A14
|
||
JREQ SEATS_HIT ;BR=WE JUST HIT THIS OBJECT
|
||
|
||
MOVE *A8(OXVAL),A14,L
|
||
CMPI -0EC9B00H,A14
|
||
JRLT SEATS_HIT ;BR=CAN'T GO LEFT
|
||
CMPI 0A37100H,A14
|
||
JRGT SEATS_HIT ;BR=CAN'T GO RIGHT
|
||
|
||
MOVE *A8(OZVAL),A14,L
|
||
MOVE @ZBASE,A0,L
|
||
ADDI ZMAX_REAL+01000H,A0
|
||
CMP A0,A14
|
||
JRGT SEATS_HIT ;BR=NOT CLOSE ENOUGH IN Z
|
||
|
||
MOVE @XBASE,A0,L
|
||
SG_CHECK_CENTER
|
||
CMPI -0250B00H,A0
|
||
JRNE SG_GO_CENTER ;BR=GO TO THE CENTER
|
||
MOVE *A8(OXVAL),A14,L
|
||
MOVK 1,A1
|
||
SUB A0,A14
|
||
JRN SG_GO ;BR=GO LEFT
|
||
MOVK 4,A1
|
||
JRUC SG_GO ;BR=GO RIGHT
|
||
SG_GO_CENTER
|
||
MOVK 2,A1 ;GO CENTER
|
||
SG_GO
|
||
OR A8,A1 ;OBJECT + DIRECTION FLAG
|
||
MOVE A1,@SCROLL_FLAG,L
|
||
|
||
CALLA UNIV_FLASH
|
||
SOUND1 SND_DIR_CHOSEN
|
||
SEATS_DONE
|
||
RETS
|
||
SEATS_HIT
|
||
SOUNDZ SND_SEATS_HIT
|
||
RETS
|
||
|
||
|
||
SND_SEATS_HIT
|
||
; .WORD 0F310H,34,0A160H,0
|
||
.WORD 0F308H,31,0A15AH,0
|
||
SND_SEATS_EXPLODE
|
||
.WORD 0F320H,29,0A176H,0
|
||
|
||
|
||
;**************************************************************************
|
||
;* *
|
||
;* FIND_SEATS_PROC *
|
||
;* *
|
||
;**************************************************************************
|
||
;
|
||
;FIND_SEATS_PROC
|
||
; MOVI OID_UNIV|9 << 5,A9
|
||
; MOVI FGLIST,A10
|
||
;FSP_RESTART
|
||
; MOVE A10,A8
|
||
; CLR A11
|
||
;
|
||
; MOVE @ZBASE,A2,L
|
||
; MOVE @ZBASE,A3,L
|
||
;
|
||
; JRUC FGP_NEXT
|
||
;FSP_LUPE
|
||
; MOVE *A8(OID),A14,W
|
||
; CMP A9,A14
|
||
; JRNE FSP_NEXT
|
||
;
|
||
; MOVE *A8(OZVAL),A14,L
|
||
;
|
||
;
|
||
;
|
||
; CREATE PID_IND,FSP_FLASH
|
||
;
|
||
;
|
||
; INC A11
|
||
; SLEEP 1
|
||
; MOVE @SCROLL_FLAG
|
||
; JRNZ FSP_FOUND
|
||
;FSP_NEXT
|
||
; MOVE *A8,A8,L
|
||
; CMP A10,A8
|
||
; JRNE FSP_LUPE ;BR=NOT END OF LIST
|
||
; DIE
|
||
;
|
||
;FSP_FLASH
|
||
; MOVE A13,*A8(OPLINK),L
|
||
;
|
||
; MOVK 20,A10
|
||
;FSP_FLASH_LUPE
|
||
; MOVE *A8(OCTRL),A14,W
|
||
; ANDI 0FFF0H,A14
|
||
; ORI DMACNZ & 0FH,A14 ;SET CONSTANT ON NON-ZERO DATA
|
||
; MOVE A14,*A8(OCTRL),W
|
||
;
|
||
; SLEEP 3
|
||
;
|
||
; MOVE *A8(OCTRL),A14,W
|
||
; ANDI 0FFF0H,A14
|
||
; ORI DMAWNZ & 0FH,A14 ;SET CONSTANT ON NON-ZERO DATA
|
||
; MOVE A14,*A8(OCTRL),W
|
||
;
|
||
; MOVE @SCROLL_FLAG,A14,W
|
||
; JRNZ FSP_FLASH_DONE
|
||
;
|
||
; SLEEP 3
|
||
; DSJ A10,FSP_FLASH_LUPE
|
||
;
|
||
;FSP_FLASH_DONE
|
||
; CLR A14
|
||
; MOVE A14,*A8(OPLINK),L
|
||
; DIE
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* PASPEAKER VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
PASPEAKER_COLLVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,PASPEAKER_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
PASPEAKER_CVECT
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ PASPEAKER_DONE
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
|
||
MOVI 500,A5 ;POINTS
|
||
MOVK M_NOMORE|M_LASTFRM|M_FLASHOBJ,A7 ;LAST AND FLASH
|
||
CLR A9
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
PAS_EXPLODE
|
||
SOUNDZ SND_PASPEAKER_EXPLODE
|
||
|
||
MOVK 1,A11 ;Z OFFSET
|
||
MOVE *A8(OFLAGS),A14,W
|
||
BTST B_DBLSCL,A14
|
||
JRZ PAS_ONE_CD ;BR=NOT DOUBLE SCALE
|
||
MOVI [-35*2,-40*2],A10 ;[Y,X] OFFSET
|
||
CREATE PID_IND,REVEAL_CD2
|
||
MOVI [-35*2,40*2],A10 ;[Y,X] OFFSET
|
||
CREATE PID_IND,REVEAL_CD2
|
||
MOVI [-105*2,-40*2],A10 ;[Y,X] OFFSET
|
||
CREATE PID_IND,REVEAL_CD2
|
||
MOVI [-105*2,40*2],A10 ;[Y,X] OFFSET
|
||
CREATE PID_IND,REVEAL_CD2
|
||
JRUC PAS_GO
|
||
PAS_ONE_CD
|
||
MOVI [-70,0],A10 ;[Y,X] OFFSET
|
||
CREATE PID_IND,REVEAL_CD2
|
||
PAS_GO
|
||
|
||
MMTM SP,B1,B2,B4,B5,B6,B8,B9,b10 ;MAKE FRAGMENTS
|
||
|
||
MOVI 040000H,A0
|
||
CLR A3
|
||
CALLA PreFrag_Box
|
||
MOVI -0FFH,B9 ;MIN Z VEL
|
||
MOVI -01H,B10 ;MAX Z VEL
|
||
MOVI FRAG_U20_X2,B14
|
||
CALLA Fragger
|
||
|
||
MOVI SPKR1p,A14
|
||
MOVE A14,*A0(FPDATA),L ;SET PALETTE
|
||
|
||
MMFM SP,B1,B2,B4,B5,B6,B8,B9,b10
|
||
|
||
RETS
|
||
PASPEAKER_GUNVECT
|
||
MOVI 500,A5 ;POINTS
|
||
MOVK M_NOMORE|M_FLASHOBJ,A7 ;LAST AND FLASH
|
||
CLR A9
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
JRC PAS_EXPLODE
|
||
|
||
SOUNDZ SND_SWAT
|
||
PASPEAKER_DONE
|
||
RETS
|
||
|
||
SND_PASPEAKER_EXPLODE
|
||
.WORD 0F320H,69,0A14AH,0
|
||
|
||
**************************************************************************
|
||
* *
|
||
* MONITOR VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
MONITOR_COLLVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,MONITOR_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
MONITOR_CVECT
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ MONITOR_DONE
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
|
||
MOVI 1000,A5 ;POINTS
|
||
MOVK M_NOMORE|M_LASTFRM|M_FLASHOBJ,A7 ;LAST AND FLASH
|
||
CLR A9
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
MON_EXPLODE
|
||
SOUNDZ SND_MONITOR_EXPLODE
|
||
|
||
MOVI [-40,3],A10
|
||
MOVE *A8(OIMG),A14,L
|
||
CMPI MONSMA1,A14
|
||
JREQ MON_REVEAL ;BR=THIS IS THE MONITOR
|
||
MOVI [-28,1],A10 ;DRESSING ROOM SPEAKER
|
||
MON_REVEAL
|
||
MOVK 1,A11
|
||
CREATE PID_IND,REVEAL_CD
|
||
|
||
MMTM SP,B1,B2,B4,B5,B6,B8,B9,b10 ;MAKE FRAGMENTS
|
||
|
||
MOVI 040000H,A0
|
||
CLR A3
|
||
CALLA PreFrag_Up
|
||
MOVI -0FFH,B9 ;MIN Z VEL
|
||
MOVI -01H,B10 ;MAX Z VEL
|
||
MOVI FRAG_U10_X2,B14
|
||
CALLA Fragger
|
||
|
||
MOVI SPKR1p,A14
|
||
MOVE A14,*A0(FPDATA),L ;SET PALETTE
|
||
|
||
MMFM SP,B1,B2,B4,B5,B6,B8,B9,b10
|
||
|
||
RETS
|
||
MONITOR_GUNVECT
|
||
MOVI 1000,A5 ;POINTS
|
||
MOVK M_NOMORE|M_FLASHOBJ,A7 ;LAST AND FLASH
|
||
CLR A9
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
JRC MON_EXPLODE
|
||
|
||
SOUNDZ SND_SWAT
|
||
MONITOR_DONE
|
||
RETS
|
||
|
||
SND_MONITOR_EXPLODE
|
||
.WORD 0F320H,60,0A147H,0
|
||
|
||
**************************************************************************
|
||
* *
|
||
* BALCONY VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
BALCONY_COLLVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,BALCONY_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
BALCONY_CVECT
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ BALCONY_DONE
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
|
||
MMTM SP,B1,B2,B4,B5,B6,B8,B9,b10 ;MAKE FRAGMENTS
|
||
|
||
MOVI 040000H,A0
|
||
CLR A3
|
||
CALLA PreFrag_Box
|
||
MOVI -0FFH,B9 ;MIN Z VEL
|
||
MOVI -01H,B10 ;MAX Z VEL
|
||
MOVE *A8(OCTRL),A14,W
|
||
BTST B_FLIPH,A14
|
||
JRZ BAL_NOFLIPH
|
||
CLR B4
|
||
JRUC BAL_GO
|
||
BAL_NOFLIPH
|
||
CLR B3
|
||
BAL_GO
|
||
MOVI FRAG_U40_X2,B14
|
||
CALLA Fragger
|
||
|
||
MOVE *A8(OIMG),A1,L
|
||
MOVE *A1(ICMAP),*A0(FPDATA),L ;SET PALETTE
|
||
|
||
CLR A0
|
||
CLR A3
|
||
CALLA PreFrag_Center
|
||
MOVI -0FFH,B9 ;MIN Z VEL
|
||
MOVI -01H,B10 ;MAX Z VEL
|
||
MOVI FRAG_ONE_CLOUD_X2,B14
|
||
CALLA Fragger
|
||
|
||
MOVI GOLD_DUST_PAL,A14
|
||
MOVE A14,*A0(FPDATA),L ;SET PALETTE
|
||
|
||
MMFM SP,B1,B2,B4,B5,B6,B8,B9,b10
|
||
|
||
MOVI 1000,A5 ;POINTS
|
||
MOVK M_NOMORE|M_LASTFRM|M_FLASHOBJ,A7 ;LAST AND FLASH
|
||
CLR A9
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
|
||
MOVK 1,A11
|
||
MOVI [-36*2,28*2],A10
|
||
CREATE PID_IND,REVEAL_PROCK
|
||
MOVI [-48*2,25*2],A10
|
||
CREATE PID_IND,REVEAL_PROCK
|
||
MOVI [-59*2,10*2],A10
|
||
CREATE PID_IND,REVEAL_PROCK
|
||
MOVI [-48*2,5*2],A10
|
||
CREATE PID_IND,REVEAL_PROCK
|
||
MOVI [-44*2,-7*2],A10
|
||
CREATE PID_IND,REVEAL_PROCK
|
||
|
||
SOUND1 SND_GOLDSHIT_EXPLODE
|
||
|
||
RETS
|
||
BALCONY_GUNVECT
|
||
SOUNDZ SND_SWAT
|
||
BALCONY_DONE
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* PROSCENIUM VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
PROSC_COLLVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,PROSC_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
PROSC_CVECT
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ PROSC_DONE
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
|
||
CLR A3
|
||
MOVI 1000,A5 ;POINTS
|
||
PRO_DAMAGE
|
||
MOVK M_NOMORE|M_LASTFRM|M_FLASHOBJ,A7 ;LAST AND FLASH
|
||
CLR A9
|
||
MOVI TOPMOD1,A0 ;LOOK FOR THIS
|
||
MOVE *A8(OIMG),A11,L
|
||
CMP A0,A11
|
||
JRNE PRO_GO
|
||
MOVI [0,-94],A9
|
||
PRO_GO
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
MOVE A0,A10
|
||
;PRO_EXPLODE
|
||
SOUND1 SND_GOLDSHIT_EXPLODE
|
||
|
||
MOVE A3,A11
|
||
MMTM SP,B1,B2,B4,B5,B6,B8,B9,b10 ;MAKE FRAGMENTS
|
||
|
||
MOVI 040000H,A0
|
||
CLR A3
|
||
CALLA PreFrag_Box
|
||
MOVI -0FFH,B9 ;MIN Z VEL
|
||
MOVI -01H,B10 ;MAX Z VEL
|
||
MOVI FRAG_U20_X2,B14
|
||
CALLA Fragger
|
||
|
||
MOVI BIGTOPp2,A14
|
||
MOVE A14,*A0(FPDATA),L ;SET PALETTE
|
||
|
||
CLR A0
|
||
CLR A3
|
||
CALLA PreFrag_Center
|
||
MOVI -0FFH,B9 ;MIN Z VEL
|
||
MOVI -01H,B10 ;MAX Z VEL
|
||
MOVI FRAG_ONE_CLOUD_X2,B14
|
||
CALLA Fragger
|
||
|
||
MOVI GOLD_DUST_PAL,A14
|
||
MOVE A14,*A0(FPDATA),L ;SET PALETTE
|
||
|
||
MMFM SP,B1,B2,B4,B5,B6,B8,B9,b10
|
||
|
||
MOVE A9,A9
|
||
JRZ PROSC_DONE
|
||
|
||
MOVE A11,A3
|
||
JRNZ PROSC_DONE
|
||
MOVK 1,A3
|
||
|
||
MOVI FGLIST,A0
|
||
MOVE A0,A8
|
||
CLR A5 ;NO SCORE
|
||
PRO_LUPE
|
||
MOVE *A8(OIMG),A14,L ;CHECK IMAGES
|
||
CMP A10,A14
|
||
JREQ PRO_DAMAGE
|
||
PRO_NEXT
|
||
MOVE *A8,A8,L
|
||
CMP A0,A8
|
||
JRNE PRO_LUPE ;BR=NOT END OF LIST
|
||
|
||
RETS
|
||
PROSC_GUNVECT
|
||
; MOVI 1000,A5 ;POINTS
|
||
; MOVK M_NOMORE|M_FLASHOBJ,A7 ;LAST AND FLASH
|
||
; CLR A9
|
||
; CALLA UNIV_DAMAGE_HANDLER
|
||
; JRC PRO_EXPLODE
|
||
|
||
SOUNDZ SND_SWAT
|
||
|
||
PROSC_DONE
|
||
RETS
|
||
|
||
SND_GOLDSHIT_EXPLODE
|
||
.WORD 0F320H,40,0A328H,0
|
||
|
||
**************************************************************************
|
||
* *
|
||
* PILLAR VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
PILLAR_COLLVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,PILLAR_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
PILLAR_CVECT
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ PILLAR_DONE
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
|
||
SOUND1 SND_GOLDSHIT_EXPLODE
|
||
|
||
MMTM SP,B1,B2,B4,B5,B6,B8,B9,b10 ;MAKE FRAGMENTS
|
||
|
||
MOVI 040000H,A0
|
||
CLR A3
|
||
CALLA PreFrag_Box
|
||
MOVI -0FFH,B9 ;MIN Z VEL
|
||
MOVI -01H,B10 ;MAX Z VEL
|
||
MOVI FRAG_U40_X2,B14
|
||
CALLA Fragger
|
||
|
||
MOVI COLMN1p,A14
|
||
MOVE A14,*A0(FPDATA),L ;SET PALETTE
|
||
|
||
CLR A0
|
||
CLR A3
|
||
CALLA PreFrag_Center
|
||
MOVI -0FFH,B9 ;MIN Z VEL
|
||
MOVI -01H,B10 ;MAX Z VEL
|
||
MOVI FRAG_ONE_CLOUD_X2,B14
|
||
CALLA Fragger
|
||
|
||
MOVI GOLD_DUST_PAL,A14
|
||
MOVE A14,*A0(FPDATA),L ;SET PALETTE
|
||
|
||
MMFM SP,B1,B2,B4,B5,B6,B8,B9,b10
|
||
|
||
MOVE @PILLAR_COUNT,A1,W
|
||
CMPK 1,A1
|
||
JRNE PIL_DEL ;BR=NO PILLARS DESTROYED
|
||
MOVE @ZSCROLL,A14,L
|
||
JRNZ PIL_ABORT ;BR=STILL MOVIN'
|
||
MOVE @ZBASE,A14,L
|
||
CMPI 05336CH,A14
|
||
JRNE PIL_ABORT ;BR=NOT AT DESTRUCTION Z
|
||
; CMPI 53300H,A14
|
||
; JRLT PIL_ABORT ;BR = No good if not close
|
||
PIL_DEL
|
||
|
||
MOVE *A8(OULINK),A0,L
|
||
CLR A14
|
||
MOVE A14,*A8(OULINK),L
|
||
CALLA REMOVE_AND_FREE_LINK
|
||
CALLA DEL_PROC_AND_OBJ
|
||
|
||
INC A1
|
||
CMPK 2,A1
|
||
JREQ PIL_GO
|
||
MOVE A1,@PILLAR_COUNT,W
|
||
PIL_ABORT
|
||
RETS
|
||
PIL_GO
|
||
SOUND1 SND_BREAKDOWN
|
||
|
||
.IF DEBUG
|
||
CALLA VALID_PLAYER
|
||
.ENDIF
|
||
MOVI 75,A10 ;Delay for smart bomb
|
||
MOVE A2,A11
|
||
CREATE PID_IND,PROC_DELAYED_SBOMB ;Smart bomb effect for landing
|
||
PIL_NO_SBOMB
|
||
|
||
MOVI FGLIST,A3
|
||
MOVE A3,A8
|
||
MOVI OID_UNIV|9 << 2,A4
|
||
PIL_LUPE
|
||
MOVE *A8(OID),A14,W
|
||
CMP A4,A14
|
||
JRNE PIL_NEXT
|
||
|
||
MOVE *A8(OYVAL),A14,L
|
||
JRNN PIL_NEXT
|
||
|
||
MOVE *A8(OULINK),A0,L ;REMOVE FROM UNIVERSE
|
||
CLR A14
|
||
MOVE A14,*A8(OULINK),L
|
||
CALLA REMOVE_AND_FREE_LINK
|
||
|
||
MOVI 08001H,A0
|
||
CALLA RAND0
|
||
MOVE A0,*A8(OYVEL),L
|
||
|
||
MOVI 03000H,A14
|
||
MOVE A14,*A8(OYACCEL),W
|
||
|
||
MOVE *A8(OFLAGS),A14,W
|
||
ORI M_GCOLL,A14
|
||
MOVE A14,*A8(OFLAGS),W
|
||
|
||
MOVI PROSC_GROUND_COLLVECT,A14
|
||
MOVE A14,*A8(OCVECT),L
|
||
PIL_NEXT
|
||
MOVE *A8,A8,L
|
||
CMP A3,A8
|
||
JRNE PIL_LUPE ;BR=NOT END OF LIST
|
||
|
||
RETS
|
||
PILLAR_GUNVECT
|
||
SOUNDZ SND_SWAT
|
||
PILLAR_DONE
|
||
RETS
|
||
|
||
SND_BREAKDOWN
|
||
.WORD 0F380H,120,0A305H,0
|
||
|
||
**************************************************************************
|
||
* *
|
||
* PROSCENIUM GROUND COLLISION STUFF *
|
||
* *
|
||
**************************************************************************
|
||
|
||
PROSC_GROUND_COLLVECT
|
||
WWL OID_GRND,0FFFFH,PROSC_GROUND_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
PROSC_GROUND_CVECT
|
||
MOVE *A8(OFLAGS),A14,W
|
||
ANDNI M_GCOLL,A14
|
||
MOVE A14,*A8(OFLAGS),W
|
||
|
||
SOUND1 SND_CRUMBLE
|
||
|
||
CALLA STOPOBJ
|
||
CALLA SetOnGrnd
|
||
|
||
MMTM SP,B1,B2,B4,B5,B6,B8,B9,b10 ;MAKE FRAGMENTS
|
||
|
||
; MOVI 040000H,A0
|
||
; CLR A3
|
||
; CALLA PreFrag_Box
|
||
; MOVI -0FFH,B9 ;MIN Z VEL
|
||
; MOVI -01H,B10 ;MAX Z VEL
|
||
; MOVI -080000H,B7
|
||
; CLR B8
|
||
; MOVI FRAG_U5,B14
|
||
; CALLA Fragger
|
||
;
|
||
; MOVI BIGTOPp2,A14
|
||
; MOVE A14,*A0(FPDATA),L ;SET PALETTE
|
||
|
||
CLR A0
|
||
CLR A3
|
||
CALLA PreFrag_Box
|
||
MOVI -010000H,B7
|
||
MOVI -0800H,B9
|
||
MOVI -0800H,B10
|
||
MOVI FRAG_PROSC_SMOKE,B14
|
||
CALLA Fragger
|
||
|
||
MOVI GOLD_DUST_PAL,A14
|
||
MOVE A14,*A0(FPDATA),L ;SET PALETTE
|
||
|
||
MMFM SP,B1,B2,B4,B5,B6,B8,B9,b10
|
||
|
||
MOVI FRAG_DUST_CLOUD_ANIM,A1
|
||
JAUC STRT_ANIM
|
||
|
||
|
||
FRAG_PROSC_SMOKE
|
||
.long FRAG_PROSC_SMOKE_ANIM,F_UFRAG_STUFF_X2
|
||
.word OID_JUNK,(3 << 11) + (1 << 6) + (FRGNOFLY)
|
||
.long FRAG_PROSC_SMOKE_ANIM,F_UFRAG_STUFF_X2
|
||
.word OID_JUNK,(5 << 11) + (1 << 6) + (FRGBOG+FRGNOFLY)
|
||
.long FRAG_PROSC_SMOKE_ANIM,F_UFRAG_STUFF_X2
|
||
.word OID_JUNK,(2 << 11) + (1 << 6) + (FRGBOG+FRGNOFLY)
|
||
.long 0
|
||
|
||
;SMOKE_NEW_PAL
|
||
; MOVE *A0(OFLAGS),A14,W
|
||
; ORI M_DBLSCL,A14
|
||
; MOVE A14,*A0(OFLAGS),W
|
||
;
|
||
; MOVI -0800H,A14
|
||
; MOVE A14,*A0(OZVEL),L
|
||
;
|
||
; move A0,A2
|
||
; MOVI GOLD_DUST_PAL,A0
|
||
; calla GETFPAL
|
||
; JRNZ SNP_PAL ;BR = WE HAVE PALETTE!
|
||
; CLR A0
|
||
;SNP_PAL
|
||
; move A0,*A2(OPAL),W
|
||
; MOVE A2,A0
|
||
; RETS
|
||
|
||
PROSC_SMOKE_ANIM
|
||
LW 1,10
|
||
FRAG_PROSC_SMOKE_ANIM
|
||
LWLL dstcld1,4|AFunc,A_CHANGE_PAL+2,GOLD_DUST_PAL
|
||
LW dstcld2,4
|
||
LW dstcld3,4
|
||
LW dstcld4,4
|
||
LW dstcld5,4
|
||
LW dstcld6,4
|
||
LW dstcld7,4
|
||
LW dstcld8,4
|
||
LW dstcld1,4
|
||
LW dstcld2,4
|
||
LW dstcld3,4
|
||
LW dstcld4,4
|
||
LW dstcld5,4
|
||
LW dstcld6,4
|
||
LW dstcld7,4
|
||
LW dstcld8,4
|
||
LWL 1,1|AFunc,DEL_PROC_AND_OBJ
|
||
|
||
SND_CRUMBLE
|
||
; .WORD 0F321H,60,0A30BH,0
|
||
.WORD 0F37FH,86,0A33EH,0
|
||
|
||
**************************************************************************
|
||
* *
|
||
* SPOTLIGHT VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
SPOTLIGHT_COLLVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,SPOTLIGHT_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
SPOTLIGHT_COLLVECT2
|
||
WWL OID_GRND,0FFFFH,SPOTLIGHT_GROUND_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
SPOTLIGHT_GROUND_CVECT
|
||
SOUNDZ SND_SPOT_CRUNCH
|
||
SOUNDZ SND_SPOT_SHATTER
|
||
JAUC DELETE_OBJ
|
||
|
||
SPOTLIGHT_CVECT
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ SPOTLIGHT_DONE
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
|
||
MOVI 1000,A1
|
||
CLR A9
|
||
CALLA PRINT_SCORE
|
||
|
||
SOUNDZ SND_SPOT_CRUNCH
|
||
|
||
MOVE *A8(OULINK),A0,L
|
||
CLR A14
|
||
MOVE A14,*A8(OULINK),L
|
||
CALLA REMOVE_AND_FREE_LINK ;REMOVE FROM UNIVERSE
|
||
|
||
MOVI 03000H,A14
|
||
MOVE A14,*A8(OYACCEL),W
|
||
|
||
MOVE *A8(OFLAGS),A14,W
|
||
ORI M_GCOLL,A14
|
||
MOVE A14,*A8(OFLAGS),W
|
||
|
||
MOVI SPOTLIGHT_COLLVECT2,A14
|
||
MOVE A14,*A8(OCVECT),L
|
||
|
||
MMTM SP,B1,B2,B4,B5,B6,B8,B9,b10 ;MAKE FRAGMENTS
|
||
|
||
MOVI 040000H,A0
|
||
CLR A3
|
||
CALLA PreFrag_Center
|
||
MOVI -0FFH,B9 ;MIN Z VEL
|
||
MOVI -01H,B10 ;MAX Z VEL
|
||
MOVI FRAG_U5,B14
|
||
CALLA Fragger
|
||
|
||
MOVI MOL14d,A14
|
||
MOVE A14,*A0(FPDATA),L ;SET PALETTE
|
||
|
||
MMFM SP,B1,B2,B4,B5,B6,B8,B9,b10
|
||
|
||
RETS
|
||
SPOTLIGHT_GUNVECT
|
||
SOUNDZ SND_SPOT_HIT
|
||
|
||
MOVE *A8(OYACCEL),A14,W
|
||
JRNZ SPOTLIGHT_DONE
|
||
|
||
MOVB *A8(OFLAGS+B_ANIM-7),A14
|
||
JRN SLG_CHECK ;BR=IT'S ANIMATING
|
||
|
||
CLR A5
|
||
MOVI M_STAY|M_FLASHOBJ,A7
|
||
CLR A9
|
||
JAUC UNIV_DAMAGE_HANDLER
|
||
SLG_CHECK
|
||
MOVE *A8(OIMG),A14,L
|
||
CMPI MOL13,A14
|
||
JREQ SLG_OUT
|
||
CMPI MOL14,A14
|
||
JRNE SPOTLIGHT_DONE
|
||
SLG_OUT
|
||
MOVI 1000,A1
|
||
CLR A9
|
||
CALLA PRINT_SCORE
|
||
|
||
SOUNDZ SND_SPOT_OUT
|
||
|
||
MOVE *A8(OULINK),A0,L
|
||
MOVI dam_tbl_SPOTOUT+M_IF_DAM,A14
|
||
MOVE A14,*A0(MAP_IMG),L
|
||
|
||
MOVI SPOTOUT_NOW_ANIM,A1
|
||
CALLA STRT_ANIM
|
||
|
||
; MMTM SP,B1,B2,B4,B5,B6,B8,B9,b10 ;MAKE FRAGMENTS
|
||
;
|
||
; MOVI 040000H,A0
|
||
; CLR A3
|
||
; CALLA PreFrag_Center
|
||
; MOVI -0FFH,B9 ;MIN Z VEL
|
||
; MOVI -01H,B10 ;MAX Z VEL
|
||
; MOVI FRAG_S10,B14
|
||
; CALLA Fragger
|
||
;
|
||
; MOVI SHARDPAL1,A14
|
||
; MOVE A14,*A0(FPDATA),L ;SET PALETTE
|
||
;
|
||
; MMFM SP,B1,B2,B4,B5,B6,B8,B9,b10
|
||
|
||
SPOTLIGHT_DONE
|
||
RETS
|
||
|
||
dam_tbl_SPOTOUT:
|
||
.long MOL3+0
|
||
.word 1
|
||
.long dSPOTOUTsq+9
|
||
|
||
dSPOTOUTsq:
|
||
LW MOL1,3
|
||
LWW MOL3,3|AFlip,M_FLIPH
|
||
LW MOL5,3
|
||
LW MOL7,3
|
||
LW MOL9,3
|
||
LW MOL11,3
|
||
SPOTOUT_NOW_ANIM
|
||
LWW MOL11,4|AFlip,0
|
||
LW MOL9,4
|
||
LW MOL7,5
|
||
LW MOL5,5
|
||
LWL MOL1,1|AFunc,PULL_ANIM
|
||
|
||
SND_SPOT_CRUNCH
|
||
.WORD 0F321H,60,0A147H,0
|
||
SND_SPOT_SHATTER
|
||
.WORD 0F320H,64,0A32EH,0
|
||
SND_SPOT_HIT
|
||
.WORD 0F308H,30,0A120H,0
|
||
SND_SPOT_OUT
|
||
.WORD 0F310H,47,0A32BH,0
|
||
|
||
**************************************************************************
|
||
* *
|
||
* STAR ON THE DRESSING ROOM DOOR VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
STAR_COLLVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,STAR_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
STAR_CVECT
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ STAR_DONE
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
STAR_GUNVECT
|
||
MOVI 1000,A1
|
||
CLR A9
|
||
CALLA PRINT_SCORE
|
||
|
||
SOUNDZ SND_SPOT_CRUNCH
|
||
|
||
MMTM SP,B1,B2,B4,B5,B6,B8,B9,b10 ;MAKE FRAGMENTS
|
||
|
||
MOVI 040000H,A0
|
||
CLR A3
|
||
CALLA PreFrag_Box
|
||
MOVI -0FFH,B9 ;MIN Z VEL
|
||
MOVI -01H,B10 ;MAX Z VEL
|
||
MOVI FRAG_U20,B14
|
||
CALLA Fragger
|
||
|
||
MOVI RSTAR1p,A14
|
||
MOVE A14,*A0(FPDATA),L ;SET PALETTE
|
||
|
||
MMFM SP,B1,B2,B4,B5,B6,B8,B9,b10
|
||
|
||
MOVK 1,A14
|
||
MOVE A14,@SCROLL_FLAG,W
|
||
|
||
MOVE *A8(OULINK),A0,L
|
||
CLR A14
|
||
MOVE A14,*A8(OULINK),L
|
||
CALLA REMOVE_AND_FREE_LINK ;REMOVE FROM UNIVERSE
|
||
JAUC DELETE_OBJ ; AND DELETE
|
||
STAR_DONE
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* ********************************************************************** *
|
||
* * *
|
||
* * ******************************************************************** *
|
||
* * * *
|
||
* * * DRESSING ROOM DAMAGE *
|
||
* * * *
|
||
* * ******************************************************************** *
|
||
* * *
|
||
* ********************************************************************** *
|
||
* *
|
||
**************************************************************************
|
||
|
||
**************************************************************************
|
||
* *
|
||
* DRESSING ROOM LAMP VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
DLAMP_COLLVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,DLAMP_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
DLAMP_CVECT
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ DLAMP_DONE
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
JRUC DLAMP_GO
|
||
DLAMP_GUNVECT
|
||
MOVI [30-5,0-22],A3
|
||
MOVI [47-5,46-22],A4
|
||
CALLA BOX_CHECK_OBJ
|
||
JRZ DLAMP_DONE
|
||
DLAMP_GO
|
||
MOVE @BLACKOUT,A14,W
|
||
JRNZ DLAMP_DONE ;BR=LIGHTS OUT! BLACKOUT!
|
||
|
||
MOVI 500,A5 ;POINTS
|
||
MOVK M_NOMORE|M_FLASHOBJ,A7 ;LAST AND FLASH
|
||
CLR A9
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
|
||
SOUNDZ SND_DLAMP_BREAK
|
||
|
||
MMTM SP,B1,B2,B4,B5,B6,B8,B9,b10 ;MAKE FRAGMENTS
|
||
|
||
MOVI 040000H,A0
|
||
CLR A3
|
||
MOVI [27,0],A4
|
||
CALLA PreFrag_Offset
|
||
MOVI -0FFH,B9 ;MIN Z VEL
|
||
MOVI -01H,B10 ;MAX Z VEL
|
||
MOVI -010000H,B7 ;MINIMUM Y VELOCITY
|
||
MOVI FRAG_U5,B14
|
||
CALLA Fragger
|
||
|
||
MOVI NGLAMP3p,A14
|
||
MOVE A14,*A0(FPDATA),L ;SET PALETTE
|
||
|
||
MOVI FRAG_SS10,B14
|
||
CALLA Fragger
|
||
|
||
MOVI SHARDPAL1,A14
|
||
MOVE A14,*A0(FPDATA),L ;SET PALETTE
|
||
|
||
CLR B3 ;CLEAR X VELOCITY
|
||
CLR B4
|
||
CLR B7 ;CLEAR Y VELOCITY
|
||
CLR B8
|
||
CLR B9 ;CLEAR Z VELOCITY
|
||
CLR B10
|
||
MOVI FRAG_ONE_SPARK,B14
|
||
CALLA Fragger
|
||
|
||
MMFM SP,B1,B2,B4,B5,B6,B8,B9,b10
|
||
DLAMP_DONE
|
||
RETS
|
||
|
||
SND_DLAMP_BREAK
|
||
.WORD 0F340H,75,083CEH,0 ;Lamp break
|
||
|
||
**************************************************************************
|
||
* *
|
||
* MIRROR LIGHT VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
MLIGHT_COLLVECT
|
||
; WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PROCKET,~MASK_PLAYER,MLIGHT_CVECT
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,MLIGHT_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
MLIGHT_CVECT
|
||
; CALLA UNIV_COLL_CHECK
|
||
; JRNZ MLIGHT_DONE
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
MLIGHT_GUNVECT
|
||
MOVI 500,A1
|
||
CLR A9
|
||
CALLA PRINT_SCORE
|
||
|
||
SOUNDZ SND_DLAMP_BREAK
|
||
|
||
MMTM SP,B1,B2,B4,B5,B6,B8,B9,b10 ;MAKE FRAGMENTS
|
||
|
||
MOVI 040000H,A0
|
||
CLR A3
|
||
CALLA PreFrag_Center
|
||
MOVI -0FFH,B9 ;MIN Z VEL
|
||
MOVI -01H,B10 ;MAX Z VEL
|
||
MOVI FRAG_SS5,B14
|
||
CALLA Fragger
|
||
|
||
MOVI SHARDPAL1,A14
|
||
MOVE A14,*A0(FPDATA),L ;SET PALETTE
|
||
|
||
MMFM SP,B1,B2,B4,B5,B6,B8,B9,b10
|
||
|
||
MOVE *A8(OULINK),A0,L
|
||
CLR A14
|
||
MOVE A14,*A8(OULINK),L
|
||
CALLA REMOVE_AND_FREE_LINK ;REMOVE FROM UNIVERSE
|
||
JAUC DELETE_OBJ ; AND DELETE
|
||
MLIGHT_DONE
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* BUNCH OF FLOWERS VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
FLOWERS_COLLVECT
|
||
; WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PROCKET,~MASK_PLAYER,FLOWERS_CVECT
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,FLOWERS_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
FLOWERS_CVECT
|
||
; CALLA UNIV_COLL_CHECK
|
||
; JRNZ FLOWERS_DONE
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
JRUC FLOWERS_GO
|
||
FLOWERS_GUNVECT
|
||
MOVI [56-75,30-34],A3
|
||
MOVI [75-75,38-34],A4
|
||
CALLA BOX_CHECK_OBJ
|
||
JRNZ FLOWERS_GO
|
||
|
||
MMTM SP,B1,B2,B4,B5,B6,B8,B9,b10 ;MAKE FRAGMENTS
|
||
|
||
MOVI 040000H,A0
|
||
CLR A3
|
||
CLR A4
|
||
CALLA PreFrag_Gun
|
||
MOVI -0FFH,B9 ;MIN Z VEL
|
||
MOVI -01H,B10 ;MAX Z VEL
|
||
MOVI FRAG_SS5,B14
|
||
CALLA Fragger
|
||
|
||
MOVI FLOWR2p,A14
|
||
MOVE A14,*A0(FPDATA),L ;SET PALETTE
|
||
|
||
MMFM SP,B1,B2,B4,B5,B6,B8,B9,b10
|
||
|
||
RETS
|
||
|
||
FLOWERS_GO
|
||
MOVI 1000,A5 ;POINTS
|
||
MOVK M_NOMORE|M_FLASHOBJ,A7 ;LAST AND FLASH
|
||
CLR A9
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
|
||
SOUNDZ SND_VASE_SHATTER
|
||
|
||
MMTM SP,B1,B2,B4,B5,B6,B8,B9,b10 ;MAKE FRAGMENTS
|
||
|
||
MOVI 040000H,A0
|
||
CLR A3
|
||
CALLA PreFrag_Center
|
||
MOVI -0FFH,B9 ;MIN Z VEL
|
||
MOVI -01H,B10 ;MAX Z VEL
|
||
MOVI FRAG_SS20,B14
|
||
CALLA Fragger
|
||
|
||
MOVI FLOWR2p,A14
|
||
MOVE A14,*A0(FPDATA),L ;SET PALETTE
|
||
|
||
MOVI 040000H,A0
|
||
CLR A3
|
||
CLR A4
|
||
CALLA PreFrag_Offset
|
||
MOVI -0FFH,B9 ;MIN Z VEL
|
||
MOVI -01H,B10 ;MAX Z VEL
|
||
MOVI FRAG_SS10,B14
|
||
CALLA Fragger
|
||
|
||
MOVI SHARDPAL1,A14
|
||
MOVE A14,*A0(FPDATA),L ;SET PALETTE
|
||
|
||
MOVI 040000H,A0
|
||
CLR A3
|
||
MOVI [-35,0],A4
|
||
CALLA PreFrag_Offset
|
||
MOVI -028000H,B3 ;MIN X VEL
|
||
MOVI -08000H,B4 ;MAX X VEL
|
||
MOVI -010000H,B8 ;MAX Y VEL
|
||
MOVI -0190H,B9 ;MIN Z VEL
|
||
MOVI -010H,B10 ;MAX Z VEL
|
||
MOVI FRAG_FLOWERS,B14
|
||
CALLA Fragger
|
||
|
||
MOVE *A8(OCTRL),*A0(FPDATA),W ;PASS VASE FLIP
|
||
|
||
MMFM SP,B1,B2,B4,B5,B6,B8,B9,b10
|
||
|
||
FLOWERS_DONE
|
||
RETS
|
||
|
||
SND_VASE_SHATTER
|
||
.WORD 0F310H,44,0A173H,0
|
||
|
||
FRAG_FLOWERS
|
||
.long FLOWER_FLY_ANIM,F_FLOWER_STUFF
|
||
.word OID_JUNK,(4 << 11) + (1 << 6) + (FRGGCOL+FRGNOFLP+FRGPAL)
|
||
.long FLOWER_FLY_ANIM,F_FLOWER_STUFF
|
||
.word OID_JUNK,(2 << 11) + (1 << 6) + (FRGBOG+FRGGCOL+FRGNOFLP+FRGPAL)
|
||
.long 0
|
||
|
||
FLOWER_FLY_ANIM
|
||
LW DFLURB2,5
|
||
LW DFLURB5,1
|
||
LWL 1,2|AFunc,A_CHECK_FLOWER
|
||
LW DFLURB6,3
|
||
LWLL DFLURB9,1|AFunc,A_AnimScr+2,FLOWER_LUPE
|
||
FLOWER_LUPE
|
||
LWL 1,4|AFunc,A_DELETE_ZBOT
|
||
.long 0
|
||
|
||
**************************************************************************
|
||
* *
|
||
* A_CHECK_FLOWER - CHECK FLOWERS VELOCITY *
|
||
* *
|
||
* A8 = FLOWER OBJECT *
|
||
* *
|
||
**************************************************************************
|
||
A_CHECK_FLOWER
|
||
MOVE *A8(OYVEL),A14,L
|
||
CMPI 03000H,A14
|
||
JRGE A_CF_DONE
|
||
MOVE *A8(AnimFrm),A14,L
|
||
SUBI 020H+010H+020H,A14
|
||
MOVE A14,*A8(AnimFrm),L
|
||
A_CF_DONE
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* F_FLOWERS_STUFF - DO STUFF TO DA FLOWER FRAGMENTS *
|
||
* *
|
||
* A0 = Ptr to un-inserted object. *
|
||
* *
|
||
* Note: Frag funcs must preserve A8-A11 and all B-File regs. *
|
||
* *
|
||
**************************************************************************
|
||
|
||
F_FLOWER_STUFF
|
||
MOVI FRAG_FLOWER_COLL,A14
|
||
MOVE A14,*A0(OCVECT),L ;Set up chunk with Vectors
|
||
|
||
MOVI SHRED_GUNVECT,A14
|
||
MOVE A14,*A0(OGUNVECT),L ;MAKE IT SHREDABLE
|
||
|
||
MOVE *A13(FPDATA),A1,W ;GET VASE FLIP
|
||
ANDI M_FLIPH,A1
|
||
|
||
MOVE A0,A7
|
||
MOVI 256,A0
|
||
CALLA RANDPER
|
||
JRNC F_FS_GO
|
||
XORI M_FLIPH,A1
|
||
F_FS_GO
|
||
MOVE A7,A0
|
||
MOVE *A0(OCTRL),A14,W
|
||
ANDNI M_FLIPH,A14 ;FLIP TO POINT RIGHT
|
||
OR A1,A14
|
||
MOVE A14,*A0(OCTRL),W
|
||
|
||
MOVE A1,A1
|
||
JRZ F_FS_DONE ;BR=WE'RE UNFLIPPED. NEGATIVE OXVEL OK!
|
||
MOVE *A0(OXVEL),A14,L
|
||
NEG A14
|
||
MOVE A14,*A0(OXVEL),L
|
||
F_FS_DONE
|
||
RETS
|
||
|
||
FRAG_FLOWER_COLL
|
||
WWL OID_GRND,0FFFFH,DELETE_OBJ
|
||
WL 0,DUMCRETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* SHRED_GUNVECT - SHRED AN OBJECT *
|
||
* *
|
||
* A8 = OBJECT *
|
||
* *
|
||
**************************************************************************
|
||
|
||
SHRED_GUNVECT
|
||
MOVI 10000,A1
|
||
CLR A9
|
||
CALLA PRINT_SCORE
|
||
|
||
SOUNDZ SND_SHRED
|
||
|
||
MMTM SP,B1,B2,B4,B5,B6,B8,B9,b10 ;MAKE FRAGMENTS
|
||
|
||
MOVI 040000H,A0
|
||
CLR A3
|
||
CALLA PreFrag_Center
|
||
MOVI -0FFH,B9 ;MIN Z VEL
|
||
MOVI -01H,B10 ;MAX Z VEL
|
||
MOVI FRAG_SS10,B14
|
||
CALLA Fragger
|
||
|
||
MOVE *A8(OIMG),A1,L
|
||
MOVE *A1(ICMAP),*A0(FPDATA),L ;SET PALETTE
|
||
|
||
MMFM SP,B1,B2,B4,B5,B6,B8,B9,b10
|
||
|
||
MOVE *A8(OULINK),A14,L
|
||
JAZ DELETE_OBJ ;BR=DELETE A NON-UNIVERSE OBJECT
|
||
MOVE *A8(OULINK),A0,L
|
||
CLR A14
|
||
MOVE A14,*A8(OULINK),L
|
||
CALLA REMOVE_AND_FREE_LINK ;REMOVE FROM UNIVERSE
|
||
JAUC DELETE_OBJ ; AND DELETE
|
||
RETS
|
||
|
||
SND_SHRED
|
||
.WORD 0F308H,31,0A15AH,0
|
||
|
||
**************************************************************************
|
||
* *
|
||
* DAMAGE VECTOR TABLES *
|
||
* *
|
||
**************************************************************************
|
||
|
||
LA_BATHROOM_VECT_TABLE
|
||
;1, 2
|
||
.LONG 0,0,0,0
|
||
;3, 4
|
||
.LONG 0,0,TRASHCAN_COLLVECT,TRASHCAN_GUNVECT
|
||
;5, 6
|
||
.LONG MIRROR_COLLVECT,MIRROR_GUNVECT,0,0
|
||
;7, 8
|
||
.LONG 0,0,0,0
|
||
;9, 10
|
||
.LONG 0,0,0,0
|
||
;11, 12
|
||
.LONG DRIER_COLLVECT,DRIER_GUNVECT,DRY_VENT_COLLVECT,DRY_VENT_GUNVECT
|
||
;13, 14
|
||
.LONG SOAPBOX_COLLVECT,SOAPBOX_GUNVECT,SINK_COLLVECT,SINK_GUNVECT
|
||
;15, 16
|
||
.LONG STALLDOOR_COLLVECT,STALLDOOR_GUNVECT,THAND_COLLVECT,THAND_GUNVECT
|
||
;17, 18
|
||
.LONG TSEAT_COLLVECT,TSEAT_GUNVECT,TBAS_COLLVECT,TBAS_GUNVECT
|
||
;19, 20
|
||
.LONG TPAPER_COLLVECT,TPAPER_GUNVECT,POOPBOY_COLLVECT,POOPBOY_GUNVECT
|
||
;21, 22
|
||
.LONG 0,0,0,0
|
||
;23, 24
|
||
.LONG 0,0,0,0
|
||
;25, 26
|
||
.LONG 0,0,0,0
|
||
;27, 28
|
||
.LONG 0,0,0,0
|
||
;29, 30
|
||
.LONG 0,0,0,0
|
||
;31, 32
|
||
.LONG 0,0,0,0
|
||
|
||
LA_STAGE_VECT_TABLE
|
||
;1, 2
|
||
.LONG 0,0,RLADDER_COLLVECT,RLADDER_GUNVECT
|
||
;3, 4
|
||
.LONG CAN_COLLVECT,CAN_GUNVECT,LID_COLLVECT,LID_GUNVECT
|
||
;5, 6
|
||
.LONG DELITRAY_COLLVECT,DELITRAY_GUNVECT,SEATS_COLLVECT,SEATS_GUNVECT
|
||
;7, 8
|
||
.LONG PASPEAKER_COLLVECT,PASPEAKER_GUNVECT,MONITOR_COLLVECT,MONITOR_GUNVECT
|
||
;9, 10
|
||
.LONG BALCONY_COLLVECT,BALCONY_GUNVECT,PROSC_COLLVECT,PROSC_GUNVECT
|
||
;11, 12
|
||
.LONG PILLAR_COLLVECT,PILLAR_GUNVECT,SPOTLIGHT_COLLVECT,SPOTLIGHT_GUNVECT
|
||
;13, 14
|
||
.LONG 0,0,0,0
|
||
;15, 16
|
||
.LONG 0,0,STAR_COLLVECT,STAR_GUNVECT
|
||
;17, 18
|
||
.LONG 0,0,0,0
|
||
;19, 20
|
||
.LONG 0,0,0,0
|
||
;21, 22
|
||
.LONG DLAMP_COLLVECT,DLAMP_GUNVECT,0,0
|
||
;23, 24
|
||
.LONG 0,0,0,0
|
||
;25, 26
|
||
.LONG 0,0,0,0
|
||
;27, 28
|
||
.LONG 0,0,0,0
|
||
;29, 30
|
||
.LONG 0,LSWITCH_GUNVECT,0,0
|
||
;31, 32
|
||
.LONG 0,0,0,0
|
||
|
||
*
|
||
* Aerosmith's dressing room
|
||
*
|
||
LA_DRESS_VECT_TABLE
|
||
;1, 2
|
||
; .LONG 0,0,RLADDER_COLLVECT,RLADDER_GUNVECT
|
||
.LONG 0,0,0,0
|
||
;3, 4
|
||
.LONG CAN_COLLVECT,CAN_GUNVECT,LID_COLLVECT,LID_GUNVECT
|
||
;5, 6
|
||
.LONG DELITRAY_COLLVECT,DELITRAY_GUNVECT,SEATS_COLLVECT,SEATS_GUNVECT
|
||
;7, 8
|
||
.LONG PASPEAKER_COLLVECT,PASPEAKER_GUNVECT,MONITOR_COLLVECT,MONITOR_GUNVECT
|
||
;9, 10
|
||
.LONG BALCONY_COLLVECT,BALCONY_GUNVECT,PROSC_COLLVECT,PROSC_GUNVECT
|
||
;11, 12
|
||
.LONG PILLAR_COLLVECT,PILLAR_GUNVECT,SPOTLIGHT_COLLVECT,SPOTLIGHT_GUNVECT
|
||
;13, 14
|
||
.LONG 0,0,0,0
|
||
;15, 16
|
||
.LONG 0,0,STAR_COLLVECT,STAR_GUNVECT
|
||
;17, 18
|
||
.LONG CTABLE_COLLVECT,CTABLE_GUNVECT,BOTTLE_COLLVECT,BOTTLE_GUNVECT
|
||
;19, 20
|
||
.LONG FLOWERS_COLLVECT,FLOWERS_GUNVECT,DGITAR_COLLVECT,DGITAR_GUNVECT
|
||
;21, 22
|
||
.LONG DLAMP_COLLVECT,DLAMP_GUNVECT,MLIGHT_COLLVECT,MLIGHT_GUNVECT
|
||
;23, 24
|
||
.LONG MONITOR_COLLVECT,MONITOR_GUNVECT,FCHAIR_COLLVECT,FCHAIR_GUNVECT
|
||
;25, 26
|
||
.LONG DMIRROR_COLLVECT,DMIRROR_GUNVECT,0,PBUTTON_GUNVECT
|
||
;27, 28
|
||
.LONG DOLL_COLLVECT,DOLL_GUNVECT,FRUIT_COLLVECT,FRUIT_GUNVECT
|
||
;29, 30
|
||
.LONG 0,LSWITCH_GUNVECT,0,0
|
||
;31, 32
|
||
.LONG 0,0,0,0
|
||
|
||
.end
|
||
|