1075 lines
23 KiB
NASM
1075 lines
23 KiB
NASM
.MLIB "GXMACS.LIB"
|
||
.FILE "GXLA3.ASM"
|
||
.TITLE " <<< GENERATION X -- LA UNIVERSE ROUTINES PART 3 >>>"
|
||
.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 "GXLA3.TBL"
|
||
.include "GXSTRING.H"
|
||
|
||
* SYMBOLS IN HERE
|
||
.DEF PUSH_BUTTON
|
||
; .DEF CHAIRBOY_GUNVECT, CHAIRBOY_COLLVECT, WLAMP_GUNVECT
|
||
.DEF WLAMP_GUNVECT
|
||
.DEF WLAMP_COLLVECT, PORTDOOR_COLLVECT
|
||
.DEF FCHAIR_GUNVECT, FCHAIR_COLLVECT, DGITAR_GUNVECT, DGITAR_COLLVECT
|
||
.DEF DMIRROR_GUNVECT, DMIRROR_COLLVECT, DELITRAY_GUNVECT, DELITRAY_COLLVECT
|
||
.DEF FRUIT_GUNVECT, FRUIT_COLLVECT, DOLL_GUNVECT, DOLL_COLLVECT
|
||
.DEF LSWITCH_GUNVECT, PBUTTON_GUNVECT
|
||
|
||
.ref VIDEO_PLAY
|
||
.REF DUXNOFADE
|
||
|
||
* SYMBOLS IN GXRAM
|
||
.REF GUNS_OFF, BUYIN_NOFADE
|
||
|
||
* SYMBOLS IN GXLA2.ASM
|
||
.REF MIRROR_GUNVECT, MIRROR_CVECT2, SND_DLAMP_BREAK, SHRED_GUNVECT
|
||
.REF SND_DLAMP_BREAK, SHRED_GUNVECT
|
||
|
||
* SYMBOLS IN GXSCROLL.ASM
|
||
.REF SECRET_PALETTE_TABLE
|
||
|
||
* SYMBOLS FROM GXNONBOY.ASM
|
||
.REF SND_BODY_THUD
|
||
|
||
* SYMBOLS FROM GXBLOOD.ASM
|
||
.REF BLOODY_BULLET_HIT
|
||
|
||
.BSS VCR_PLAYER,16 ;Player number that shot VCR play button
|
||
.BSS UNUSED_WORD,16
|
||
|
||
.TEXT
|
||
|
||
**************************************************************************
|
||
* *
|
||
* ********************************************************************** *
|
||
* * *
|
||
* * ******************************************************************** *
|
||
* * * *
|
||
* * * DRESSING ROOM DAMAGE CONTINUED *
|
||
* * * *
|
||
* * ******************************************************************** *
|
||
* * *
|
||
* ********************************************************************** *
|
||
* *
|
||
**************************************************************************
|
||
|
||
**************************************************************************
|
||
* *
|
||
* DRESSING ROOM MIRROR VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
DMIRROR_COLLVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,DMIRROR_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
DMIRROR_CVECT
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ DMIRROR_DONE
|
||
CALLA MIRROR_CVECT2
|
||
JRUC DMIRROR_CHECK
|
||
DMIRROR_GUNVECT
|
||
CALLA MIRROR_GUNVECT
|
||
DMIRROR_CHECK
|
||
MOVE *A8(OGUNVECT),A14,L
|
||
CMPI DUMRETS,A14
|
||
JRNE DMIRROR_DONE
|
||
|
||
MOVK 1,A14
|
||
MOVE A14,@SCROLL_FLAG,L
|
||
|
||
CALLA GET_FREE_LINK
|
||
JRZ DMIRROR_DONE
|
||
|
||
CLR A14
|
||
MOVE A14,*A0(MAP_FLAGS),W
|
||
|
||
MOVI VIDEO_ANIM+M_IF_SEQ,A14
|
||
MOVE A14,*A0(MAP_IMG),L ;WATER ANIMATION
|
||
|
||
move *a8(OXVAL),*A0(MAP_X),L
|
||
MOVE *a8(OYVAL),*A0(MAP_Y),L
|
||
MOVE *a8(OZVAL),a14,L
|
||
addk 2,a14
|
||
move a14,*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
|
||
|
||
DMIRROR_DONE
|
||
RETS
|
||
|
||
VIDEO_ANIM
|
||
LWL SNOWSCRN,1|AFunc,A_CHECK_BUTTON
|
||
.long 0
|
||
|
||
**************************************************************************
|
||
* *
|
||
* A_CHECK_BUTTON - CHECK IF PLAY BUTTON PUSHED *
|
||
* *
|
||
* A8 = VIDEO SCREEN OBJECT *
|
||
* *
|
||
**************************************************************************
|
||
|
||
A_CHECK_BUTTON
|
||
MOVE @SCROLL_FLAG,A14,L
|
||
JRNZ A_CB_DONE
|
||
|
||
MOVE A8,A2
|
||
|
||
CLR A8
|
||
MOVI [63,255],A9
|
||
CLR A10
|
||
MOVK 20,A11
|
||
CREATE PID_IND,TRACK_FADE_PROC
|
||
|
||
MOVE A2,A8
|
||
|
||
|
||
|
||
MOVI VIDEO_PLAY,A14
|
||
MOVE A14,*A8(AnimFrm),L
|
||
|
||
A_CB_DONE
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* PLAY BUTTON VECTOR *
|
||
* *
|
||
**************************************************************************
|
||
|
||
PUSH_BUTTON
|
||
MOVI FGLIST,A1
|
||
MOVE A1,A8
|
||
|
||
MOVI VCPLAY1,A3 ;FIND THIS
|
||
|
||
CLR A2 ;This says no player shot it
|
||
JRUC PB_NEXT
|
||
PB_LUPE
|
||
MOVE *A8(OIMG),A14,L
|
||
CMP A3,A14
|
||
JRNE PB_NEXT ;BR=NOT DA BUTTON
|
||
|
||
MOVE *A8(OGUNVECT),A14,L
|
||
CMPI PBUTTON_GUNVECT,A14
|
||
JREQ PBUTTON_GUNVECT ;BR=IT'S OKAY!
|
||
RETS
|
||
PB_NEXT
|
||
MOVE *A8,A8,L
|
||
CMP A1,A8
|
||
JRNE PB_LUPE ;BR=NOT END OF LIST
|
||
LOCKON
|
||
RETS
|
||
|
||
PBUTTON_GUNVECT
|
||
CALLA PULL_ANIM
|
||
CALLA OBJ_ON_WNZ
|
||
|
||
SOUNDZ SND_BUTTON_CLICK
|
||
|
||
MOVI DUMRETS,A14
|
||
MOVE A14,*A8(OGUNVECT),L
|
||
|
||
MOVE A2,A2
|
||
JRNZ PBG_PLAYER_SHOT_IT
|
||
MOVK 1,A0
|
||
NEG A0
|
||
JRUC PBG_STORE_PLAYER
|
||
PBG_PLAYER_SHOT_IT
|
||
CALLA GPLAYNUM
|
||
PBG_STORE_PLAYER
|
||
MOVE A0,@VCR_PLAYER,W ;Let the world now who shot it
|
||
|
||
MOVI FGLIST,A1
|
||
MOVE A8,A0
|
||
|
||
MOVI VHSB14,A3 ;FIND THIS
|
||
|
||
JRUC PBG_NEXT
|
||
PBG_LUPE
|
||
MOVE *A0(OIMG),A14,L
|
||
CMP A3,A14
|
||
JRNE PBG_NEXT ;BR=NOT DA TAPE
|
||
|
||
MOVI TAPE_ANIM,A1
|
||
JAUC STRTANIM
|
||
PBG_NEXT
|
||
MOVE *A0,A0,L
|
||
CMP A1,A0
|
||
JRNE PBG_LUPE ;BR=NOT END OF LIST
|
||
PBUTTON_DONE
|
||
RETS
|
||
|
||
SND_BUTTON_CLICK
|
||
.WORD 0F308H,31,0A15AH,0
|
||
|
||
**************************************************************************
|
||
* *
|
||
* A_TAPE_IN - TAPE IS IN THE VCR *
|
||
* *
|
||
* A8 = TAPE OBJECT *
|
||
* *
|
||
**************************************************************************
|
||
|
||
A_TAPE_IN
|
||
CLR A14
|
||
MOVE A14,@SCROLL_FLAG,L ;FLAG VIDEO TO START
|
||
JAUC PULL_ANIM
|
||
|
||
TAPE_ANIM
|
||
LWLLW VHSB12,5|AFunc,A_Set_Var_Word+3,GUNS_OFF,1
|
||
LW VHSB8,5
|
||
LW VHSB6,5
|
||
LW VHSB4,5
|
||
LW VHSB1,30
|
||
LWL 1,1|AFunc,A_TAPE_IN
|
||
|
||
**************************************************************************
|
||
* *
|
||
* DRESSING ROOM GITAR VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
DGITAR_COLLVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,DGITAR_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
DGITAR_COLLVECT2
|
||
WWL OID_GRND,0FFFFH,DGITAR_CVECT2
|
||
WL 0,DUMCRETS
|
||
|
||
DGITAR_CVECT2
|
||
SOUNDZ SND_DGITAR_TWANG
|
||
JAUC DELETE_OBJ
|
||
|
||
DGITAR_CVECT
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ DGITAR_DONE
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
|
||
MOVI 1000,A1
|
||
CLR A9
|
||
CALLA PRINT_SCORE
|
||
|
||
CALLA UNIV_FLASH ;FLASH IT!
|
||
|
||
MOVI DGITAR_COLLVECT2,A14
|
||
MOVE A14,*A8(OCVECT),L
|
||
|
||
MOVE *A8(OFLAGS),A14,W
|
||
ORI M_GCOLL,A14 ;SET GROUND COLL FLAG
|
||
MOVE A14,*A8(OFLAGS),W
|
||
|
||
MOVI 03000H,A14
|
||
MOVE A14,*A8(OYACCEL),W
|
||
|
||
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 FLYVG4ap,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
|
||
|
||
DGITAR_GUNVECT
|
||
SOUNDZ SND_DGITAR_TWANG
|
||
DGITAR_DONE
|
||
RETS
|
||
|
||
SND_DGITAR_TWANG
|
||
.WORD 0F320H,86,0A16AH,0
|
||
|
||
**************************************************************************
|
||
* *
|
||
* FOLDING CHAIR VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
FCHAIR_COLLVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,FCHAIR_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
FCHAIR_CVECT
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ FCHAIR_DONE
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
|
||
MOVI 500,A1
|
||
CLR A9
|
||
CALLA PRINT_SCORE
|
||
|
||
MMTM SP,B1,B2,B4,B5,B6,B8,B9,b10 ;MAKE FRAGMENTS
|
||
|
||
MOVI 040000H,A0
|
||
CLR A3
|
||
CALLA PreFrag_Center
|
||
MOVI -0FFH,B9
|
||
MOVI -01H,B10
|
||
MOVI FRAG_U30,B14
|
||
CALLA Fragger
|
||
|
||
MOVI FLDCHR2p,A14
|
||
MOVE A14,*A0(FPDATA),L ;SET PALETTE
|
||
|
||
MMFM SP,B1,B2,B4,B5,B6,B8,B9,b10
|
||
|
||
SOUNDZ SND_FCHAIR_SHRED
|
||
|
||
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
|
||
|
||
RETS
|
||
|
||
FCHAIR_GUNVECT
|
||
MOVI 500,A5 ;POINTS
|
||
MOVK M_NOMORE|M_FLASHOBJ,A7 ;LAST AND FLASH
|
||
CLR A9
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
|
||
SOUNDZ SND_FCHAIR_CLANG
|
||
FCHAIR_DONE
|
||
RETS
|
||
|
||
SND_FCHAIR_CLANG
|
||
.WORD 0F320H,30,0A111H,0
|
||
SND_FCHAIR_SHRED
|
||
.WORD 0F320H,60,0A147H,0
|
||
|
||
**************************************************************************
|
||
* *
|
||
* DOLL VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
DOLL_COLLVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,DOLL_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
DOLL_CVECT
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ DOLL_DONE
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
|
||
DOLL_GUNVECT
|
||
; MOVI 500,A5 ;POINTS
|
||
; MOVK M_NOMORE|M_FLASHOBJ,A7 ;LAST AND FLASH
|
||
; CLR A9
|
||
; CALLA UNIV_DAMAGE_HANDLER
|
||
|
||
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 FRAGMENTS
|
||
|
||
MOVI 040000H,A0
|
||
CLR A3
|
||
CALLA PreFrag_Box
|
||
MOVI -0FFH,B9
|
||
MOVI -01H,B10
|
||
MOVI FRAG_SS30,B14
|
||
CALLA Fragger
|
||
|
||
MOVI DOLLZ1,A14
|
||
MOVE A14,*A0(FPDATA),L ;SET PALETTE
|
||
|
||
MMFM SP,B1,B2,B4,B5,B6,B8,B9,b10
|
||
|
||
SOUNDZ SND_DOLL_SHRED
|
||
DOLL_DONE
|
||
RETS
|
||
|
||
SND_DOLL_SHRED
|
||
.WORD 0F320H,60,0A126H,0
|
||
|
||
**************************************************************************
|
||
* *
|
||
* FRUIT VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
FRUIT_COLLVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,FRUIT_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
FRUIT_CVECT
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ FRUIT_DONE
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
FRUIT_GUNVECT
|
||
SOUNDZ SND_FRUIT
|
||
|
||
MOVE *A8(OIMG),A14,L
|
||
CMPI DAPPL1,A14
|
||
JREQ FG_APPLE ;BR=WE HAVE APPLE
|
||
|
||
MOVI 500,A5 ;START BANANIMATION
|
||
MOVK M_FLASHOBJ,A7
|
||
CLR A9
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
|
||
MOVI GROUND_COLLVECT,A14
|
||
JRUC FG_GO
|
||
FG_APPLE
|
||
MOVI 500,A1 ;DO THE APPLE THING
|
||
CLR A9
|
||
CALLA PRINT_SCORE
|
||
CALLA UNIV_FLASH
|
||
MOVI APPLE_CVECT,A14
|
||
FG_GO
|
||
MOVE A14,*A8(OCVECT),L
|
||
|
||
MOVI SHRED_GUNVECT,A14
|
||
MOVE A14,*A8(OGUNVECT),L
|
||
|
||
MOVE *A8(OFLAGS),A14,W
|
||
ORI M_GCOLL,A14 ;SET GROUND COLL FLAG
|
||
MOVE A14,*A8(OFLAGS),W
|
||
|
||
MOVI 02800H,A14
|
||
MOVE A14,*A8(OYACCEL),W
|
||
|
||
MOVI 010000H,A0
|
||
MOVI -010000H,A1
|
||
CALLA RANGERND
|
||
MOVE A0,*A8(OXVEL),L
|
||
MOVI -030000H,A0
|
||
MOVI -040000H,A1
|
||
CALLA RANGERND
|
||
MOVE A0,*A8(OYVEL),L
|
||
MOVI -010H,A0
|
||
MOVI -080H,A1
|
||
CALLA RANGERND
|
||
MOVE A0,*A8(OZVEL),L
|
||
|
||
MOVE *A8(OULINK),A0,L
|
||
CLR A14
|
||
MOVE A14,*A8(OULINK),L
|
||
JAUC REMOVE_AND_FREE_LINK
|
||
FRUIT_DONE
|
||
RETS
|
||
|
||
SND_FRUIT
|
||
.WORD 0F308H,31,0A15AH,0
|
||
|
||
**************************************************************************
|
||
* *
|
||
* APPLE GROUND COLLISION STUFF *
|
||
* *
|
||
**************************************************************************
|
||
|
||
APPLE_CVECT
|
||
WWL OID_GRND,0FFFFH,APPLE_GRND_COLL
|
||
WL 0,DUMCRETS
|
||
|
||
APPLE_GRND_COLL
|
||
MOVE *A8(OYVEL),A14,L
|
||
JAN DELETE_OBJ ;BR=GOING UP
|
||
JAZ DELETE_OBJ ;BR=STOPPED
|
||
MOVE A14,A0
|
||
SRA 2,A0
|
||
SUB A0,A14
|
||
CMPI 010000H,A14
|
||
JALT DELETE_OBJ ;BR=BELOW MINIMUM VELOCITY
|
||
NEG A14 ;REVERSE VELOCITY
|
||
MOVE A14,*A8(OYVEL),L
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* DELI TRAY VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
DELITRAY_COLLVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,DELITRAY_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
DELITRAY_COLLVECT2
|
||
WWL OID_GRND,0FFFFH,DELITRAY_CVECT2
|
||
WL 0,DUMCRETS
|
||
|
||
DELITRAY_CVECT2
|
||
SOUNDZ SND_DELITRAY_LAND
|
||
JAUC DELETE_OBJ
|
||
|
||
DELITRAY_CVECT
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ DELITRAY_DONE
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
|
||
MOVI 500,A5
|
||
MOVK M_LASTFRM|M_FLASHOBJ,A7
|
||
CLR A9
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
|
||
MMTM SP,B1,B2,B4,B5,B6,B8,B9,b10 ;MAKE FRAGMENTS
|
||
|
||
CLR A0
|
||
MOVI 080H,A3
|
||
CALLA PreFrag_Box
|
||
MOVI 08000H,B3 ;MIN X VEL
|
||
MOVI 020000H,B4 ;MAX X VEL
|
||
MOVI -060000H,B7 ;MIN Y VEL
|
||
MOVI -038000H,B8 ;MAX Y VEL
|
||
|
||
MOVI 010000H,A1
|
||
MOVE *A8(OXVAL),A0,L
|
||
MOVE @XBASE,A14,L
|
||
SUB A14,A0
|
||
JRN DTC_GO
|
||
MOVE *A8(OCTRL),A14,W
|
||
XORI M_FLIPH,A14
|
||
MOVE A14,*A8(OCTRL),W
|
||
NEG A1
|
||
NEG B3 ;CHANGE FRAGMENTS X DIRECTION
|
||
NEG B4
|
||
DTC_GO
|
||
MOVI FRAG_FOOD,B14
|
||
CALLA Fragger
|
||
|
||
MMFM SP,B1,B2,B4,B5,B6,B8,B9,b10
|
||
|
||
MOVE A1,*A8(OXVEL),L
|
||
|
||
MOVI 02800H,A14
|
||
MOVE A14,*A8(OYACCEL),W
|
||
|
||
MOVI -038000H,A0
|
||
MOVI -050000H,A1
|
||
CALLA RANGERND
|
||
MOVE A0,*A8(OYVEL),L
|
||
|
||
MOVI 040H,A0
|
||
CLR A1
|
||
CALLA RANGERND
|
||
MOVE A0,*A8(OZVEL),L
|
||
|
||
MOVE *A8(OFLAGS),A14,W
|
||
ORI M_GCOLL,A14 ;SET GROUND COLL FLAG
|
||
MOVE A14,*A8(OFLAGS),W
|
||
|
||
MOVI DELITRAY_COLLVECT2,A14
|
||
MOVE A14,*A8(OCVECT),L
|
||
|
||
MOVE *A8(OULINK),A0,L
|
||
CLR A14
|
||
MOVE A14,*A8(OULINK),L
|
||
CALLA REMOVE_AND_FREE_LINK
|
||
DTC_CLANG
|
||
SOUNDZ SND_DELITRAY_CLANG
|
||
RETS
|
||
DELITRAY_GUNVECT
|
||
MOVE *A8(OYACCEL),A14,W
|
||
JRNZ DTC_CLANG
|
||
|
||
MMTM SP,B1,B2,B4,B5,B6,B8,B9,b10 ;MAKE FRAGMENTS
|
||
|
||
MOVI 040000H,A0
|
||
MOVI 07FH,A3
|
||
CLR A4
|
||
CALLA PreFrag_Gun
|
||
MOVI FRAG_SS5,B14
|
||
CALLA Fragger
|
||
|
||
MOVE A0,A1
|
||
MOVK 4,A0
|
||
CALLA RAND0
|
||
SLL 5,A0
|
||
ADDI FOOD_PAL_TBL,A0
|
||
MOVE *A0,A0,L
|
||
MOVE A0,*A1(FPDATA),L ;SET PALETTE
|
||
|
||
MMFM SP,B1,B2,B4,B5,B6,B8,B9,b10
|
||
|
||
DELITRAY_DONE
|
||
RETS
|
||
|
||
SND_DELITRAY_CLANG
|
||
.WORD 0F340H,27,0A344H,0
|
||
|
||
SND_DELITRAY_LAND
|
||
.WORD 0F350H,35,0A347H,0
|
||
|
||
FRAG_FOOD
|
||
.long FRAG_UANIM,F_FOOD_STUFF
|
||
.word OID_JUNK,(5 << 11) + (1 << 6) + (FRGGCOL)
|
||
.long FRAG_UANIM,F_FOOD_STUFF
|
||
.word OID_JUNK,(5 << 11) + (1 << 6) + (FRGGCOL)
|
||
.long FRAG_UANIM,F_FOOD_STUFF
|
||
.word OID_JUNK,(5 << 11) + (1 << 6) + (FRGGCOL)
|
||
.long FRAG_UANIM,F_FOOD_STUFF
|
||
.word OID_JUNK,(5 << 11) + (1 << 6) + (FRGGCOL)
|
||
|
||
.long FRAG_UANIM,F_FOOD_STUFF
|
||
.word OID_JUNK,(5 << 11) + (1 << 6) + (FRGBOG+FRGGCOL)
|
||
.long FRAG_SMALL_SHARD_ANIM,F_FOOD_STUFF
|
||
.word OID_JUNK,(5 << 11) + (1 << 6) + (FRGGCOL)
|
||
.long FRAG_SMALL_SHARD_ANIM,F_FOOD_STUFF
|
||
.word OID_JUNK,(5 << 11) + (1 << 6) + (FRGBOG+FRGGCOL)
|
||
.long 0
|
||
|
||
**************************************************************************
|
||
* *
|
||
* F_FOOD_STUFF - DO STUFF *
|
||
* *
|
||
* A0 = Ptr to un-inserted object. *
|
||
* *
|
||
* Note: Frag funcs must preserve A8-A11 and all B-File regs. *
|
||
* *
|
||
**************************************************************************
|
||
|
||
F_FOOD_STUFF
|
||
MOVI FRAG_UCOLL,A14
|
||
MOVE A14,*A0(OCVECT),L ;Set up chunk with Vectors
|
||
|
||
MOVE A0,A2
|
||
MOVK 4,A0
|
||
CALLA RAND0
|
||
SLL 5,A0
|
||
ADDI FOOD_PAL_TBL,A0
|
||
MOVE *A0,A0,L
|
||
|
||
CALLA GETFPAL
|
||
JRNZ FFS_PAL ;BR = WE HAVE PALETTE!
|
||
CLR A0
|
||
FFS_PAL
|
||
MOVE A0,*A2(OPAL),W
|
||
MOVE A2,A0
|
||
|
||
RETS
|
||
|
||
FOOD_PAL_TBL
|
||
.LONG DTOM9p,DCAULI6p,DCARRT5p,DBROC9p
|
||
|
||
DTOM9p:
|
||
.word 31
|
||
.word 001c0h,058a3h,05020h,04883h,054e6h,068c0h,06880h,06ce1h
|
||
.word 079ech,07520h,03020h,06903h,079a7h,07f16h,05880h,07523h
|
||
.word 07d65h,074a0h,04567h,029e3h,04927h,05d6ah,07e6fh,06420h
|
||
.word 07148h,06907h,07de8h,03ce4h,01a00h,040e4h,040e4h
|
||
|
||
DCAULI6p:
|
||
.word 31
|
||
.word 001c0h,02d48h,05671h,00840h,066f3h,066d1h,07334h,07b78h
|
||
.word 07bbch,0564dh,045ech,05e8bh,07336h,049e8h,05eb2h,02a2ah
|
||
.word 01204h,062b0h,02d23h,03dabh,04181h,02420h,0522ch,05207h
|
||
.word 06af6h,06f10h,07755h,00520h,05ad4h,05ad4h,05ad4h
|
||
|
||
DCARRT5p:
|
||
.word 31
|
||
.word 001c0h,058e0h,03c00h,04400h,05460h,05400h,07d80h,07e45h
|
||
.word 07de2h,07e24h,04d40h,07e04h,07e68h,06d20h,06500h,05ca0h
|
||
.word 07da1h,07960h,07f0dh,07140h,07a08h,07560h,04800h,064a0h
|
||
.word 07da0h,07e66h,04c20h,02580h,07181h,07940h,07940h
|
||
|
||
DBROC9p:
|
||
.word 31
|
||
.word 001c0h,00220h,000a0h,00020h,00040h,00100h,0224ch,00162h
|
||
.word 00103h,00144h,00000h,001e2h,00567h,00040h,011c7h,0268dh
|
||
.word 005c6h,000e3h,036cfh,00a88h,00146h,00a2ah,01a07h,02248h
|
||
.word 04354h,011c4h,009a0h,01a25h,02e6ah,015e0h,01e25h
|
||
|
||
**************************************************************************
|
||
* *
|
||
* LIGHT SWITCH VECTOR *
|
||
* *
|
||
**************************************************************************
|
||
|
||
LSWITCH_GUNVECT
|
||
MOVE @SCROLL_FLAG,A14,L
|
||
JRZ LSWITCH_DONE ;BR=NOT YET DUMMY
|
||
|
||
SOUNDZ SND_SWITCH
|
||
|
||
MOVI 500,A5
|
||
MOVK M_NOMORE|M_FLASHOBJ,A7
|
||
CLR A9
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
|
||
MOVI SECRET_PALETTE_TABLE,A1
|
||
LSWITCH_LUPE
|
||
MOVE *A1+,A0,L
|
||
JRZ LSWITCH_GO ;BR=NO MORE PALETTES
|
||
CALLA FINDPAL
|
||
JRZ LSWITCH_LUPE ;BR=NOT FOUND, SHOULD NEVER HAPPEN
|
||
CALLA FREEPAL ;ALLOCATE PALETTE
|
||
JRUC LSWITCH_LUPE
|
||
LSWITCH_GO
|
||
|
||
CLR A14 ;LIGHTS UP!
|
||
MOVE A14,@BLACKOUT,W
|
||
MOVE A14,@SCROLL_FLAG,L ;CLEAR LADDER FLAG
|
||
|
||
MOVI DUXNOFADE,A0 ;FADE IN EVERYTHING ELSE
|
||
CALLA FADEIN
|
||
|
||
CLRM @BUYIN_NOFADE,L
|
||
LSWITCH_DONE
|
||
RETS
|
||
|
||
SND_SWITCH
|
||
.WORD 0F308H,31,0A15AH,0
|
||
|
||
**************************************************************************
|
||
* *
|
||
* ********************************************************************** *
|
||
* * *
|
||
* * ******************************************************************** *
|
||
* * * *
|
||
* * * OUTSIDE CLUB X PORTAL DAMAGE *
|
||
* * * *
|
||
* * ******************************************************************** *
|
||
* * *
|
||
* ********************************************************************** *
|
||
* *
|
||
**************************************************************************
|
||
|
||
**************************************************************************
|
||
* *
|
||
* WALL LAMP VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
WLAMP_COLLVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,WLAMP_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
WLAMP_CVECT
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ WLAMP_DONE
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
|
||
WLAMP_GUNVECT
|
||
MOVI 500,A5 ;POINTS
|
||
MOVK M_NOMORE|M_FLASHOBJ,A7 ;LAST AND FLASH
|
||
CLR A9
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
|
||
SOUNDZ SND_DLAMP_BREAK
|
||
|
||
MOVE *A8(OXPOS),A14,W
|
||
CMPI 08FH,A14
|
||
JRNE WLG_FRAG
|
||
|
||
MOVE A8,A9 ;NO SCORE, NO OFFSET
|
||
MOVI FGLIST,A0
|
||
|
||
MOVI CLBXIT1_SHOOTER,A4 ;CHANGE THESE
|
||
MOVI NNDOR1,A11
|
||
|
||
JRUC WLG_NEXT
|
||
WLG_LUPE
|
||
MOVE *A8(AnimScr),A14,L ;CHECK SCRIPTS
|
||
JRZ WLG_NOANIM
|
||
CMP A4,A14
|
||
JREQ WLG_CHANGE
|
||
WLG_NOANIM
|
||
MOVE *A8(OIMG),A14,L ;CHECK IMAGES
|
||
CMP A11,A14
|
||
JRNE WLG_NEXT
|
||
WLG_CHANGE
|
||
CLR A5
|
||
CLR A7
|
||
CALLA UNIV_DAMAGE_HANDLER
|
||
JRUC WLG_GO
|
||
WLG_NEXT
|
||
MOVE *A8,A8,L
|
||
CMP A0,A8
|
||
JRNE WLG_LUPE ;BR=NOT END OF LIST
|
||
WLG_GO
|
||
MOVE A9,A8
|
||
WLG_FRAG
|
||
MMTM SP,B1,B2,B4,B5,B6,B8,B9,b10 ;MAKE FRAGMENTS
|
||
|
||
MOVI 040000H,A0
|
||
CLR A3
|
||
; MOVI [27,0],A4
|
||
CALLA PreFrag_Center
|
||
MOVI -0FFH,B9 ;MIN Z VEL
|
||
MOVI -01H,B10 ;MAX Z VEL
|
||
; MOVI -010000H,B7 ;MINIMUM Y VELOCITY
|
||
|
||
MOVI FRAG_U2,B14
|
||
MOVE *A8(OIHOFF),A9,W
|
||
JRZ WLG_GO_BIG_FRAGS
|
||
MOVI FRAG_U5,B14
|
||
WLG_GO_BIG_FRAGS
|
||
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
|
||
|
||
MOVE A9,A9
|
||
JRNZ WLAMP_DONE
|
||
|
||
MOVI LSHADE_INIT,A5 ;LET'S MAKE SOME FIREWORKS
|
||
CALLA CREATE_OBJ
|
||
JRZ WLAMP_DONE ;BR=OOPS!
|
||
|
||
MOVI LSHADE_GUNVECT,A14
|
||
MOVE A14,*A0(OGUNVECT),L
|
||
|
||
CLR A14
|
||
MOVE A14,*A0(OATEROCKET),L ;CLEAR ROCKET HIT FLAG
|
||
|
||
MOVE *A8(OZVAL),A1,L
|
||
DEC A1
|
||
MOVE A1,*A0(OZVAL),L ;SET Z POSITION
|
||
|
||
MOVE *A8(OXVAL),*A0(OXVAL),L ;SET X, Y POSITION
|
||
MOVE *A8(OYVAL),A14,L
|
||
SUBI 19 << 15,A14
|
||
MOVE A14,*A0(OYVAL),L
|
||
|
||
MOVI 02800H,A14
|
||
MOVE A14,*A0(OYACCEL),W
|
||
|
||
MOVE A0,A7
|
||
|
||
MOVI 010000H,A0
|
||
MOVI -010000H,A1
|
||
CALLA RANGERND
|
||
MOVE A0,*A7(OXVEL),L
|
||
|
||
MOVI -018000H,A0
|
||
MOVI -020000H,A1
|
||
CALLA RANGERND
|
||
MOVE A0,*A7(OYVEL),L
|
||
|
||
MOVI -01H,A0
|
||
MOVI -0FFH,A1
|
||
CALLA RANGERND
|
||
MOVE A0,*A7(OZVEL),L
|
||
|
||
MOVE A7,A0
|
||
CALLA INSOBJ
|
||
WLAMP_DONE
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* LAMP SHADE VECTORS *
|
||
* *
|
||
**************************************************************************
|
||
|
||
LSHADE_COLLVECT
|
||
WWL OID_GRND,0FFFFH,FRAG_UGRND_COLL
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,LSHADE_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
LSHADE_CVECT
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ LSHADE_DONE
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
LSHADE_GUNVECT
|
||
MOVI 1000,A1
|
||
CLR A9
|
||
CALLA PRINT_SCORE
|
||
|
||
SOUNDZ SND_LSHADE_EXPLODE
|
||
|
||
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_U3,B14
|
||
CALLA Fragger
|
||
|
||
MOVI NGLAMP3p,A14
|
||
MOVE A14,*A0(FPDATA),L ;SET PALETTE
|
||
|
||
MMFM SP,B1,B2,B4,B5,B6,B8,B9,b10 ;MAKE FRAGMENTS
|
||
|
||
JAUC DELETE_OBJ
|
||
LSHADE_DONE
|
||
RETS
|
||
|
||
SND_LSHADE_EXPLODE
|
||
.WORD 0F320H,31,0A15AH,0
|
||
|
||
LSHADE_INIT
|
||
.LONG LSHADE1,LSHADE_COLLVECT
|
||
.WORD OID_UNIV, DMAWNZ, M_GCOLL, 0
|
||
.LONG C_STRTANIM
|
||
.LONG LAMP_SHADE_ANIM
|
||
|
||
LAMP_SHADE_ANIM
|
||
LW LSHADE2,4
|
||
LW LSHADE3,4
|
||
LWW LSHADE2,4|AFlip,M_FLIPV
|
||
LW LSHADE1,4
|
||
LWW LSHADE2,4|AFlip,M_FLIPV|M_FLIPH
|
||
LWW LSHADE3,4|AFlip,M_FLIPH
|
||
LW LSHADE2,4
|
||
LWW LSHADE1,4|AFlip,0
|
||
.long 0
|
||
|
||
**************************************************************************
|
||
* *
|
||
* PORTAL DOOR VECTOR *
|
||
* *
|
||
**************************************************************************
|
||
|
||
PORTDOOR_COLLVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,PORTDOOR_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
PORTDOOR_CVECT
|
||
MOVE @WAVE_UNIV,A14,L
|
||
CMPI GXPORTAL,A14
|
||
JRNE PORTDOOR_DONE ;BR=NOT IN PORTAL ANYMORE
|
||
|
||
MOVE @ZSCROLL,A14,L
|
||
JRNZ PORTDOOR_DONE ;BR=WE'RE MOVIN'
|
||
|
||
MOVE @OBJENEMIES,A14,W
|
||
JRZ PORTDOOR_DONE
|
||
|
||
CALLA UNIV_COLL_CHECK
|
||
JRNZ PORTDOOR_DONE
|
||
|
||
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
||
CALLA POID_TO_PDATA
|
||
|
||
MOVK 1,A14 ; signal scroll table
|
||
MOVE A14,@SCROLL_FLAG,W ; to let us through
|
||
|
||
CALLA STOP_ENEMIES
|
||
|
||
SOUNDZ SND_DOOR_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,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 ;MAKE FRAGMENTS
|
||
|
||
MOVE *A8(OULINK),A0,L
|
||
CLR A14
|
||
MOVE A14,*A8(OULINK),L
|
||
CALLA REMOVE_AND_FREE_LINK ;DELETE DOOR
|
||
CALLA DEL_PROC_AND_OBJ
|
||
|
||
; movi FLEADOROPN-30h,a1 ; start of seq in a1
|
||
; move *a8(OIMG),a14,L ; current frame
|
||
;find_start:
|
||
; addi 30h,a1
|
||
; move *a1,a3,L ; start animation
|
||
; cmp a14,a3 ; on current frame
|
||
; jrne find_start
|
||
; calla STRT_ANIM
|
||
|
||
PORTDOOR_DONE
|
||
RETS
|
||
|
||
|
||
;FLEADOROPN:
|
||
; LW NNDOR1,3
|
||
; LW NNDOR2,3
|
||
; LW NNDOR3,3
|
||
; LW NNDOR4,3
|
||
; LW NNDOR5,1
|
||
; LWLL 1,1|AFunc,AU_CHANGE_MAP_IMG+2,NNDOR5
|
||
; LWL 1,1|AFunc,PULL_ANIM
|
||
|
||
|
||
SND_DOOR_EXPLODE
|
||
.WORD 0F320H,69,0A14AH,0
|
||
|
||
.end
|
||
|
||
|