revolution-x/GXNOBOY2.ASM

209 lines
4.7 KiB
NASM
Raw Permalink Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

.MLIB "GXMACS.LIB"
.FILE "GXNOBOY2.ASM"
.TITLE "<<< GENERATION X -- MORE NONBOY ROUTINES >>>"
.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 "GXENEMY.INC"
.INCLUDE "GXGLO.H"
.INCLUDE "IMGTBL.GLO"
.INCLUDE "UNIVTBL.GLO"
.INCLUDE "GXNONBOY.H"
.INCLUDE "GXNOBOY2.TBL"
* SYMBOLS IN HERE
.DEF MAKE_CHAIRBOY
* SYMBOLS FROM ?
* SYMBOLS FROM GXNONBOY.ASM
.REF SND_BODY_THUD
* SYMBOLS FROM GXBLOOD.ASM
.REF BLOODY_BULLET_HIT
.TEXT
**************************************************************************
* *
* MAKE_CHAIRBOY - MAKE A NONBOY SITTIN' IN A CHAIR. THE NONBOY DELETES *
* ITSELF WHEN WAVE_UNIV CHANGES FROM THE TIME OF CREATION*
* *
* PASS: *
* A8 = INITIAL SLEEP TIME BEFORE CREATION (NEGATE TO FLIP CHAIRBOY) *
* A9 = UNIVERSE X *
* A10 = UNIVERSE Y *
* A11 = UNIVERSE Z (RELATIVE) *
* RETURN: *
* NUTIN' *
* *
**************************************************************************
OUNIV EQU ODATA ;UHL UNIVERSE OF CREATION
MAKE_CHAIRBOY
MOVE A8,A0
ABS A0
SLEEPR A0 ;INITIAL SLEEP
MOVE A8,A4 ;SAVE TO CHECKING FLIP
MOVI CHAIRBOY_INIT,B0
CALLA MULTIMAKE
MOVE A9,A1
MOVE A10,A2
MOVE @ZREL_OFF,A3,L
SRA ZFRAC,A3
ADD A11,A3
CALLA SET_ANIPU
MOVE @WAVE_UNIV,A14,L
MOVE A14,*A8(OUNIV),L ;SAVE CURRENT UNIVERSE
MOVE A4,A4
JRNN MC_INSERT ;BR=NO FLIP
MOVE A8,A0
MC_FLIP_LUPE
MOVE *A0(OCTRL),A14,W
ORI M_FLIPH,A14 ;FLIP IT!
MOVE A14,*A0(OCTRL),W
MOVE *A0(OPARTS),A0,L
JRNZ MC_FLIP_LUPE ;BR=NO MO PARTS
MC_INSERT
CALLA INSERT_OBJ
CALLA GET_SHAD_MULTI
DIE
**************************************************************************
* *
* CHAIRBOY VECTORS *
* *
**************************************************************************
CHAIRBOY_CVECT
WWL OID_PEXPLOSION,~MASK_PLAYER,CHAIRBOY_EXPLO_COLLVECT
WL 0,DUMCRETS
CHAIRBOY_EXPLO_COLLVECT
MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
CALLA POID_TO_PDATA
JRUC CBG_GO
CHAIRBOY_GUNVECT
SOUND1 SND_BODY_THUD
CALLA BLOODY_BULLET_HIT
CBG_GO
CALLA GET_HEAD_PART
MOVE *A8(OFLAGS),A14,W ;IS THIS OBJECT DEAD?
BTST B_DEAD,A14
JRNZ CBG_DONE ;BR = YES
ORI M_DEAD,A14
MOVE A14,*A8(OFLAGS),W ;DEAD AS A DOOR KNOB
MOVI DUMCOLL,A14
MOVE A14,*A8(OCVECT),L
MOVI CHAIRBOY_FALL_ANIM,A1
CALLA STRT_ANIM
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
MOVE @WAVE_UNIV,A14,L
CMPI GXPORTAL,A14
JRNE CBG_DONE ;BR=NOT THE PORTAL
MOVE @SCROLL_FLAG,A14,L
DEC A14
MOVE A14,@SCROLL_FLAG,L ;FLAG KILL
CBG_DONE
RETS
**************************************************************************
* *
* A_CHECK_UNIV *
* *
**************************************************************************
A_CHECK_UNIV
MOVE *A8(OUNIV),A0,L
MOVE @WAVE_UNIV,A14,L
CMP A0,A14
JREQ ACU_DONE ;BR=SAME UNIVERSE
CALLA DELETE_OBJ
ACU_DONE
RETS
CHAIRBOY_INIT
.byte 5, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
.long P_NONBOYY ;IMGPAL
.word OID_NONBOY, OM_COLL ;OID, GLOBAL_OPTIONS
.LONG CHAIRBOY_CVECT
* .long IMG
* .word OCTRL, OFLAGS, OZOFF
* .word OPTIONS
LWWWW G_H3CHAFALC1, DMAWNZ, 0, 0, OM_GUNV|OM_ANIM
.LONG CHAIRBOY_GUNVECT
.LONG CHAIRBOY_WATCH_ANIM
LWWWW G_T3CHAFALC1, DMAWNZ, 0, 0, OM_PRVGUNV
LWWWW G_L3CHAFALC1, DMAWNZ, 0, 0, OM_PRVGUNV
LWWWW G_Z3CHAFALC1, DMAWNZ, 0, 0, OM_PRVGUNV
LWWWW G_Z3CHAFALC1, DMAWNZ, M_NODISP, 0, OM_PRVGUNV
CHAIRBOY_WATCH_ANIM
LWL 1,1|AFunc,A_CHECK_UNIV
.long 0
CHAIRBOY_FALL_ANIM
LW 1,6
LW G_H3CHAFALC2,1|AMulti
LW G_T3CHAFALC2,1|AMulti
LW G_L3CHAFALC2,1|AMulti
LW G_Z3CHAFALC2,1|AMulti
LWL 1,5|AFunc,OBJ_ON
LW G_H3CHAFALC3,1|AMulti
LW G_T3CHAFALC3,1|AMulti
LW G_L3CHAFALC3,1|AMulti
LW G_Z3CHAFALC3,1|AMulti
LW G_A3CHAFALC3,4
LW G_H3CHAFALC5,1|AMulti
LW G_T3CHAFALC5,1|AMulti
LW G_L3CHAFALC5,1|AMulti
LW G_Z3CHAFALC5,1|AMulti
LWL 1,5|AFunc,OBJ_OFF
LW G_H3CHAFALC6,1|AMulti
LW G_T3CHAFALC6,1|AMulti
LW G_L3CHAFALC6,1|AMulti
LW G_Z3CHAFALC6,2
LWLL G_H3CHAFALC7,1|AMulti|AFunc,A_AnimGo+2,CHAIRBOY_WATCH_ANIM
LW G_T3CHAFALC7,1|AMulti
LW G_L3CHAFALC7,1|AMulti
LW G_Z3CHAFALC7,1|AMulti
LWL G_A3CHAFALC7,1|AFunc,OBJ_ON
.END