4554 lines
122 KiB
NASM
4554 lines
122 KiB
NASM
.MLIB "GXMACS.LIB"
|
||
.FILE "GXUNIJP2.ASM"
|
||
.TITLE " <<< GENERATION X -- JAPAN UNIVERSE PT.II >>>"
|
||
.WIDTH 132
|
||
.OPTION B,D,L,T
|
||
.MNOLIST
|
||
|
||
**************************************************************************
|
||
* *
|
||
* COPYRIGHT (C) 1992 MIDWAY MANUFACTURING COMPANY. *
|
||
* ALL RIGHTS RESERVED. *
|
||
* *
|
||
**************************************************************************
|
||
|
||
* GET THE SYSTEM STUFF
|
||
.INCLUDE "GXENEMY.INC"
|
||
.INCLUDE "IMGTBL.GLO"
|
||
.include "UNIVTBL.GLO"
|
||
.INCLUDE "GXSCRL.H"
|
||
.INCLUDE "GXNONBOY.H"
|
||
.INCLUDE "GXAUDN.H"
|
||
|
||
***** Symbols in this file
|
||
|
||
.DEF JAP_BOXA_SCROLL, JAP_WARE_VECT_TABLE, DELETE_UNIV_OBJ
|
||
.DEF JAP_BOXB_SCROLL, S_ADJUST_YHALF, S_ADJUST_YWORLD
|
||
.DEF METAL_GUNVECT, WARE_CRATE_CVECT, CRATE_GUNVECT
|
||
.DEF ENT_CRATE_CVECT, ENT_CRATE_GUNVECT
|
||
.DEF ALIGHT_CVECT, ALIGHT_GUNVECT, CRATE_FRAGS, WHAREA
|
||
.DEF ROW_PARMS_TABLE, SND_GATE_EXPLODE
|
||
.DEF MARS_CVECT, MARS_GUNVECT, SND_METAL_HIT
|
||
|
||
***** from GXSCROL2.ASM
|
||
|
||
.REF SND_DIR_CHOSEN
|
||
|
||
***** from GXRAM.ASM
|
||
|
||
.REF GUNS_OFF, WAVE_IPLANE, WAVE_UNIV, OBJENEMIES, IN_MAKE_DECISION
|
||
.REF SOCRATES
|
||
|
||
***** from GXAFUNC.ASM
|
||
|
||
.REF SetAnim_AFARG, A_RAND_REL_BYTE, A_PreFrag_Center, A_Anim_DSJ
|
||
.REF A_Set_AnimLoop, A_SET_OXVEL, A_Set_Rel_Long, A_AnimGo
|
||
.REF A_SET_OYVEL, A_SOUND
|
||
|
||
***** from GXD.ASM
|
||
|
||
.REF XBASE, YBASE, ZBASE, XSCROLL, YSCROLL, ZSCROLL, YWORLD
|
||
.REF XSACCEL, YSACCEL, ZSACCEL, EXIST_OBJ_ALL, RESUME_EXIST_OBJ_ALL
|
||
.REF ZFAR, GETSUPP_FROM_OID
|
||
|
||
***** from GXUNIJAP.ASM
|
||
|
||
.REF DEAD_GUNVECT, FIND_MY_MATCH, JAP_FACTORY_SCROLL
|
||
.REF JAP_FACTORY_VECT_TABLE, BRICK_GRY_GUNVECT, SND_CHEST_HIT
|
||
.REF SND_CHEST_EXPLODE, SIGN_CVECT, SIGN_GUNVECT
|
||
|
||
***** from GXDESK.ASM
|
||
|
||
.REF DGV_FRAG_SPARK
|
||
|
||
***** from GXMONDR2.ASM
|
||
|
||
.REF PART_EXPLOSION, F_EXPLOSION_OUT
|
||
|
||
***** from GXJUNGLE.ASM
|
||
|
||
.REF VIDCAM_CVECT, VIDCAM_GUNVECT, VIDCAM_Z, VIDCAM_HOLDTIME
|
||
.REF PLYR_SEEN, S_DELETE_ENEMY_OID
|
||
|
||
***** from GXUNIV.ASM
|
||
|
||
.REF UNIV_DAMAGE_HANDLER, WXBUFFER, WYBUFFER, INIT_UCHECK_TBL
|
||
.REF UEP_Z
|
||
|
||
***** from GXUNIV1.ASM
|
||
|
||
.REF UNIV_ROCKET_COLL, UNIV_COLL_CHECK, FRAG_U5, FRAG_U20
|
||
.REF FRAG_U10_X2, FRAG_U20_X2
|
||
.REF FRAG_U10_MIX, FRAG_U20_MIX
|
||
.REF FLOAT_ZFAR
|
||
|
||
***** from GXUNILNK.ASM
|
||
|
||
.REF BG_TO_FG
|
||
|
||
***** from GXSCROLL.ASM
|
||
.REF PORTAL_GUNVECT, ZREL_OFF, SCROLLKILL
|
||
|
||
***** from GXMISC.ASM
|
||
|
||
.REF CYCLE16
|
||
|
||
***** from GXSND.ASM
|
||
|
||
.REF ONESND_Z, ONESND
|
||
|
||
***** from GXLA1.ASM
|
||
|
||
.REF DUMPSTER_COLLVECT, DUMPSTER_GUNVECT
|
||
|
||
***** from GXBGDATA.ASM
|
||
|
||
.REF JFACTR_BGND
|
||
|
||
***** from GXENEMY.ASM
|
||
|
||
.REF PROC_SND
|
||
|
||
***** from GXPOWER.ASM
|
||
|
||
.REF THROW_PROCK, REVEAL_PROCK, REVEAL_CD, REVEAL_SBOMB
|
||
.REF REVEAL_SUPERGUN
|
||
|
||
***** from GXNINJA.ASM
|
||
.REF PROC_NINJA_JUMPIN
|
||
|
||
* FROM GXNONBOY.ASM
|
||
; .REF CREATE_DROP_SHOOTING_WORLDBOY
|
||
.REF CREATE_JUMPON_NONBOY
|
||
.REF NONBOY_SHOOT_CHANCE
|
||
|
||
***** from GXFORK.ASM
|
||
.REF PROC_SIDE_FORKLIFT, PROC_BRAD_FORKLIFT, PROC_FRONT_FORKLIFT
|
||
|
||
***** from GXAERO.ASM
|
||
.REF WHITFORD_FLAG
|
||
|
||
*
|
||
*RAMma jamma japanese mother fucker! Part 2
|
||
*
|
||
.BSS GATES_BLOWN,32*8 ;Array of gate blown flags
|
||
.BSS BUSTOUT_COUNTS,8*8 ;Array of counters for bustouts
|
||
.BSS BUSTOUTS,8*8 ;Array of bustout flags
|
||
.BSS END_GATE_FLAGS,0 ;End marker for gate flags
|
||
|
||
.BSS CRATES_DESTROYED,16 ;# of crates destroyed
|
||
.BSS ARK_CRATE_BUSTED,16 ;The ark crate has already been busted
|
||
.BSS ARK_CRATE_READY,16 ;Ark is ready to appear
|
||
|
||
.BSS ENEMY_YBASE,32 ;Base Y for enemy creation
|
||
.BSS ENEMY_ZBASE,32 ;Base Z for enemy creation
|
||
|
||
.BSS WHAREA,16 ;WAREHOUSE AREA
|
||
.BSS CRATE_WAIT,16 ;Var for waiting on crate bustouts
|
||
|
||
.BSS UNUSED_WORD,16 ;For alignment purposes
|
||
|
||
FIRST_GATE_ID .EQU 8 ;ID of first gate
|
||
NUM_CRATES_FOR_ARK .EQU 255 ;Number of crates to destroy for ark
|
||
|
||
**************************************************************************
|
||
* *
|
||
* Special routines for the Japan universe *
|
||
* *
|
||
**************************************************************************
|
||
.text
|
||
|
||
**************************************************************************
|
||
* *
|
||
* Japan Scroll funcs *
|
||
* *
|
||
**************************************************************************
|
||
**************************************************************************
|
||
* *
|
||
* S_CLR_GATE_FLAGS *
|
||
* *
|
||
* Scroll func to clear the gate and bustout flags for *
|
||
* this warehouse section. *
|
||
* *
|
||
**************************************************************************
|
||
S_CLR_GATE_FLAGS
|
||
CLR A14
|
||
MOVE A14,@CRATES_DESTROYED,W ;Clear out our counters
|
||
MOVE A14,@ARK_CRATE_BUSTED,W
|
||
MOVE A14,@WHITFORD_FLAG,W
|
||
|
||
MOVKM 1,@SOCRATES,W ;We are in the Crate section
|
||
|
||
MOVI GATES_BLOWN,A1 ;Get the start of our array
|
||
MOVI END_GATE_FLAGS,A2 ;And the end.
|
||
CALLA CLRBLOCK
|
||
JAUC SCRL_DISPATCHER
|
||
|
||
**************************************************************************
|
||
* *
|
||
* S_ADJUST_YHALF *
|
||
* *
|
||
* Scroll func to set-up adjustment of YHALF *
|
||
* based on the value stored in the UNIV table. *
|
||
* *
|
||
* *A11+,W = Rate at which to change YHALF *
|
||
* *
|
||
**************************************************************************
|
||
S_ADJUST_YHALF
|
||
MOVE *A11+,A10,W
|
||
PUSHP A11
|
||
MOVE @WAVE_UNIV,A0,L
|
||
MOVE *A0(10H),A11,W
|
||
CREATE PID_IND,ADJUST_YHALF_R
|
||
PULLP A11
|
||
JAUC SCRL_DISPATCHER
|
||
|
||
**************************************************************************
|
||
* *
|
||
* S_ADJUST_YWORLD *
|
||
* *
|
||
* Scroll func to adjustment of YWORLD *
|
||
* based on the value stored in the UNIV table. *
|
||
* *
|
||
* *A11+,L = Ptr to universe ROM table *
|
||
* *
|
||
**************************************************************************
|
||
S_ADJUST_YWORLD
|
||
MOVE *A11+,A0,L
|
||
MOVE *A0(60H),A14,L
|
||
MOVE A14,@YWORLD,L
|
||
JAUC SCRL_DISPATCHER
|
||
|
||
**************************************************************************
|
||
* *
|
||
* S_CHANGE_PORTAL_GUNVECT *
|
||
* *
|
||
* Scroll func to change all objects with PORTAL_GUNVECT for *
|
||
* gun vector to the given. *
|
||
* *
|
||
* *A11+,L = Replacement Gun Vector *
|
||
* *A11+,L = Replacement Collision Vector *
|
||
* *
|
||
**************************************************************************
|
||
S_CHANGE_PORTAL_GUNVECT
|
||
MOVE *A11+,A5,L ;Get our replacement Gun Vector
|
||
MOVE *A11+,A6,L ;Get our replacement Collision Vector
|
||
|
||
MOVI FGLIST,A8
|
||
|
||
MOVI PORTAL_GUNVECT,A2 ;This is how we'll find the rascals
|
||
|
||
MOVE A8,A0
|
||
JRUC SCPG_TST
|
||
|
||
SCPG_LP
|
||
MOVE *A0(OGUNVECT),A14,L
|
||
CMP A2,A14 ;Match?
|
||
JRNE SCPG_TST ;BR = No
|
||
|
||
MOVE A5,*A0(OGUNVECT),L
|
||
MOVE A6,*A0(OCVECT),L
|
||
|
||
SCPG_TST
|
||
MOVE *A0,A0,L ;Get the next object
|
||
CMP A0,A8 ;Is that all?
|
||
JRNE SCPG_LP ;BR = No, get next
|
||
|
||
JAUC SCRL_DISPATCHER
|
||
|
||
**************************************************************************
|
||
* *
|
||
* S_SET_WHAREA *
|
||
* *
|
||
* SET WAREHOUSE AREA *
|
||
* *
|
||
* *A11+,W = AREA *
|
||
* *
|
||
**************************************************************************
|
||
S_SET_WHAREA
|
||
MOVE *A11+,A14,W
|
||
MOVE A14,@WHAREA,W
|
||
JAUC SCRL_DISPATCHER
|
||
|
||
**************************************************************************
|
||
* *
|
||
* S_BUSTOUT5_CK *
|
||
* *
|
||
* Special case check to see if we've waited at Bustout 5 for *
|
||
* too long. Uses global CRATE_WAIT as a counter. *
|
||
* *
|
||
**************************************************************************
|
||
S_BUSTOUT5_CK
|
||
MOVE @CRATE_WAIT,A14,W
|
||
JRZ S_B5_BLOWIT ;BR = Already done
|
||
DEC A14
|
||
MOVE A14,@CRATE_WAIT,W
|
||
JRZ S_B5_BLOWIT
|
||
JAUC SCRL_DISPATCHER
|
||
|
||
S_B5_BLOWIT
|
||
MOVB @BUSTOUTS+(4*8),A14
|
||
JANZ SCRL_DISPATCHER ;Somebody busted them already
|
||
|
||
MOVI BUSTOUT5_TAB_ENTRY,A4
|
||
MOVE *A4+,A3,L ;Get proper ZVAL
|
||
ADDK 10H,A4
|
||
MOVK 4 << 3, A6
|
||
|
||
MOVI (OID_UNIV|ID_31),A5 ;This is Bustout's I.D.
|
||
MOVE A5,A14
|
||
CALLA GETSUPP_FROM_OID
|
||
MOVE A14,A8
|
||
|
||
CALLR BLOW_CRATE_ENTRY
|
||
|
||
MOVI JAPA_BUSTOUT5_CONTINUE,A11
|
||
JAUC SCRL_DISPATCHER ;Jump out of this thing
|
||
|
||
**************************************************************************
|
||
* *
|
||
* JAPAN WAVE SCROLL TABLES *
|
||
* *
|
||
**************************************************************************
|
||
|
||
CRATE_ZVEL .EQU 0A0H
|
||
CRATE_XVEL .EQU 10000H
|
||
|
||
ROW0_Z .EQU -41F0H
|
||
ROW1_Z .EQU 4EF0H
|
||
ROW2_Z1 .EQU 0E3C0H
|
||
ROW2_Z2 .EQU 12D90H
|
||
ROW3_Z .EQU 19198H
|
||
ROW4_Z .EQU 27800H
|
||
ROW5_Z .EQU 3002CH
|
||
ROW6_Z .EQU 38A00H
|
||
ROW7_Z .EQU 44000H
|
||
|
||
;AREA FLAGS
|
||
AROW0 EQU 0
|
||
AROW1 EQU 1
|
||
AROW2A EQU 2
|
||
AROW2B EQU 3
|
||
AROW3 EQU 4
|
||
AROW4 EQU 5
|
||
AROW5 EQU 6
|
||
AROW6L EQU 7
|
||
AROW6R EQU 8
|
||
AROW7 EQU 9
|
||
|
||
ROW_PARMS_TABLE
|
||
|
||
;.WORD LEFT UNIVERSE X >> 16, RIGHT UNIVERSE X >> 16
|
||
;.LONG UNIVERSE Z CLOSEST, UNIVERSE Z FARTHEST
|
||
|
||
WWLL -0F6H, 0F9H, ROW0_Z+05A40H, ROW0_Z+08910H ;AROW0
|
||
WWLL -0F6H, 0F9H, ROW1_Z+05A40H, ROW1_Z+08910H ;AROW1
|
||
WWLL -0248H, -02FH, ROW2_Z1+04000H, ROW2_Z1+08400H ;AROW2A
|
||
WWLL 0F9H, 02A9H, ROW2_Z2+04000H, ROW2_Z2+07D00H ;AROW2B
|
||
ROW3_PARMS
|
||
WWLL -0248H, 02A9H, ROW3_Z+04000H, ROW3_Z+07E00H ;AROW3
|
||
WWLL -097H, 02A9H, ROW4_Z+04000H, ROW4_Z+07000H ;AROW4
|
||
WWLL -08EH, 02A9H, ROW5_Z+04000H, ROW5_Z+07800H ;AROW5
|
||
WWLL -03H, 015DH, ROW6_Z+04000H, ROW6_Z+07E00H ;AROW6L
|
||
WWLL 0208H, 02A9H, ROW6_Z+04000H, ROW6_Z+07E00H ;AROW6R
|
||
WWLL -03H, 02A9H, ROW7_Z+04000H, ROW7_Z+06B00H ;AROW7
|
||
|
||
.LONG 0 ;The terminator
|
||
|
||
**************************************************************************
|
||
* *
|
||
* Warehouse area A scroll *
|
||
* *
|
||
**************************************************************************
|
||
JAP_BOXA_SCROLL
|
||
.LONG S_CLR_GATE_FLAGS ;Clear our gate flags
|
||
|
||
.LONG S_SET_LONG, WXBUFFER, 0380000H ;Open univ block buffer
|
||
.LONG S_SET_LONG, WYBUFFER, 0540000H
|
||
|
||
LW S_AUDIT, AUDJACRATE
|
||
|
||
.LONG S_LOCKOUT_PORTALS
|
||
|
||
.LONG S_CHANGE_ZFAR,10F00H ;Set the correct ZFAR
|
||
|
||
LW S_WAIT_HERE,30
|
||
|
||
.LONG S_CREATE_PROCR ;Start the damage color stuff
|
||
.WORD PID_DAMCC
|
||
.LONG 10,57,63,P_NBOXDM,CYCLE16 ;Crate damage
|
||
.WORD 0
|
||
|
||
LW S_WAIT_HERE,1
|
||
|
||
.LONG S_CREATE_PROCR ;Start the damage color stuff
|
||
.WORD PID_DAMCC
|
||
.LONG 10,57,63,P_NBXDM2,CYCLE16 ;Crate damage
|
||
.WORD 0
|
||
|
||
LW S_WAIT_HERE,1
|
||
|
||
.LONG S_CREATE_PROCR ;Start the damage color stuff
|
||
.WORD PID_DAMCC
|
||
.LONG 10,57,63,P_NBOXDM2,CYCLE16 ;Crate damage
|
||
.WORD 0
|
||
|
||
LW S_WAIT_HERE,1
|
||
|
||
.LONG S_CREATE_PROCR ;Start the damage color stuff
|
||
.WORD PID_DAMCC
|
||
.LONG 10,57,63,P_NBOXDM3,CYCLE16 ;Crate damage
|
||
.WORD 0
|
||
|
||
LW S_WAIT_HERE,1
|
||
|
||
.LONG S_CREATE_PROCR ;Start the damage color stuff
|
||
.WORD PID_DAMCC
|
||
.LONG 10,57,63,P_NBOXDM4,CYCLE16 ;Crate damage
|
||
.WORD 0
|
||
|
||
LW S_WAIT_HERE,1
|
||
|
||
.LONG S_CREATE_PROCR ;Start the damage color stuff
|
||
.WORD PID_DAMCC
|
||
.LONG 10,56,63,P_SECDAM,CYCLE16 ;Gate damage
|
||
.WORD 0
|
||
|
||
.LONG S_SET_LONG, UEP_Z, 10F00H ;Set enemy gen
|
||
|
||
LLW S_SET_WORD, SCROLLKILL, 0 ;KILL FLOAT_ZFAR WHEN=1
|
||
|
||
.LONG S_SET_LONG, VIDCAM_Z, 8000H ;Set vidcam activation Z
|
||
|
||
LLW S_SET_WORD, VIDCAM_HOLDTIME, 15 ;Set vidcam delay
|
||
|
||
LLW S_SET_WORD, PLYR_SEEN, 0 ;Set vidcam spot flag
|
||
|
||
.LONG S_SET_LONG, ENEMY_YBASE, 1E0000H ;Set enemy offset Y
|
||
|
||
.LONG S_SET_LONG, ENEMY_ZBASE, ROW0_Z ;Set enemy offset Z
|
||
|
||
LLW S_SET_WORD, NONBOY_SHOOT_CHANCE, 1024
|
||
|
||
LWL S_X_ACCEL_LIMIT,-1000H,-CRATE_XVEL ;Reveal the crates
|
||
|
||
LLW S_SET_WORD,OBJENEMIES,M_DUMPSTER|M_BW ;Activate enemy gens
|
||
|
||
LLLW S_WAIT_FOR_COORD,XBASE,000H,1 ;Scroll past opening gate
|
||
|
||
; .LONG S_JUMP_IF_TRUE, JAPA_FIRST_CAM_GOT_EM, PLYR_SEEN
|
||
|
||
LW S_SET_WHAREA, AROW0 ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,ROW_DISPATCH+M_WAIT,0 ;Dispatch slow
|
||
|
||
; .LONG JAPA_ROW0_LEFT_CK+M_JUMP
|
||
;
|
||
;JAPA_FIRST_CAM_GOT_EM
|
||
; LLW S_DISPATCH_HERE,FAST_ROW0_DISPATCH+M_WAIT,0 ;Dispatch fast
|
||
|
||
JAPA_ROW0_LEFT_CK
|
||
LWL S_X_DECEL_LIMIT,200H,CRATE_XVEL ;Bounce off end
|
||
|
||
LLLW S_WAIT_FOR_COORD,XBASE,0D0000H,1 ;Scroll back to opening
|
||
|
||
LW S_DECEL_TO_STOP,5
|
||
|
||
.LONG S_WAIT_UNTIL_TRUE, GATES_BLOWN+(0*8) ;Wait for the first gate
|
||
|
||
LWL S_Z_ACCEL_LIMIT,8H,CRATE_ZVEL ;Head for first gate
|
||
|
||
LW S_SET_WHAREA, AROW1 ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
JAPA_GATE1_PASS
|
||
|
||
; LWL S_CREATE_PROC, PID_NINJA, PROC_BIG_NINJA
|
||
|
||
LLW S_WAIT_FOR_ZREL,600H,1
|
||
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,ROW1_Z,1
|
||
|
||
LW S_DECEL_TO_STOP,4
|
||
|
||
LWWWLW S_ACCEL_TO_POINT,-25,1AH,0,ROW1_Z,0 ;Pull back so we are lined up
|
||
|
||
.LONG S_STOP_SCROLL
|
||
|
||
LW S_WAIT_HERE,10
|
||
|
||
JAP_BOXA_DECISION_1
|
||
.LONG S_MAKE_DECISION ;FUNCTION
|
||
LW JAP_BOXA_0_LEFT,0FFFFH ;-X, Count
|
||
LW JAP_BOXA_0_RIGHT,0FFFFH ;+X, Count
|
||
LW 0,0 ;-Y, Count
|
||
LW 0,0 ;+Y, Count
|
||
LW 0,0 ;-Z, Count
|
||
LW 0,0 ;+Z, Count
|
||
|
||
.long 0
|
||
|
||
*Box area A - First decision (left)
|
||
JAP_BOXA_0_LEFT
|
||
LWL S_X_ACCEL_LIMIT,-1000H,-CRATE_XVEL ;Move left down aisle
|
||
|
||
JAPA_GATE2_WAIT
|
||
LLLW S_WAIT_FOR_COORD,XBASE,-0CD0000H,1
|
||
|
||
.LONG S_JUMP_IF_FALSE,JAPA_GATE2_INTACT,GATES_BLOWN+(1*8)
|
||
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE2_ZAP, 5, 80
|
||
|
||
JAPA_GATE2_INTACT
|
||
LLLW S_WAIT_FOR_COORD,XBASE,-0DD0000H,1
|
||
|
||
LWL S_X_DECEL_LIMIT,800H,CRATE_XVEL ;Start to head back the other way
|
||
|
||
.LONG JAPA_GATE3_WAIT+M_JUMP ;Jump to wait for Gate 3
|
||
|
||
*Box area A - First decision (right)
|
||
JAP_BOXA_0_RIGHT
|
||
LWL S_X_ACCEL_LIMIT,1000H,CRATE_XVEL ;Move right down aisle
|
||
|
||
JAPA_GATE3_WAIT
|
||
LLLW S_WAIT_FOR_COORD,XBASE,0D00000H,1
|
||
|
||
.LONG S_JUMP_IF_FALSE,JAPA_GATE3_INTACT,GATES_BLOWN+(2*8)
|
||
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE3_ZAP, 5, 80
|
||
|
||
JAPA_GATE3_INTACT
|
||
LLLW S_WAIT_FOR_COORD,XBASE,0E00000H,1
|
||
|
||
LWL S_X_DECEL_LIMIT,-800H,-CRATE_XVEL ;Start to head back the other way
|
||
|
||
.LONG JAPA_GATE2_WAIT+M_JUMP ;Jump to wait for Gate 3
|
||
|
||
JAPA_GATE3_PASS
|
||
; .LONG S_SET_LONG, ENEMY_ZBASE, ROW2_Z2 ;Set enemy offset Z
|
||
|
||
LLW S_WAIT_FOR_ZREL,9730H,1
|
||
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,ROW2_Z2-0A90H,1 ;Get to the corner
|
||
|
||
.LONG S_JUMP_IF_FALSE,JAPA_BUSTOUT1_INTACT,BUSTOUTS+(0*8)
|
||
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_ROW2_2_ZAP, 1, 80
|
||
JAPA_BUSTOUT1_PASS
|
||
LLW S_WAIT_FOR_ZREL,ROW3_Z,1 ;Get to back row
|
||
LW S_DECEL_TO_STOP,4
|
||
LWWWLW S_ACCEL_TO_POINT,-25,0F9H,0,ROW3_Z,0 ;Pull back so we are lined up
|
||
.LONG S_STOP_SCROLL
|
||
LW S_WAIT_HERE,10
|
||
.LONG S_JUMP_IF_TRUE,JAPA_BUSTOUT1_DEC2,GATES_BLOWN+(8*8)
|
||
|
||
.LONG S_MAKE_DECISION ;FUNCTION
|
||
LW JAPA_GATE9_LEFT,0FFFFH ;-X, Count
|
||
LW JAPA_GATE9_RIGHT,0FFFFH ;+X, Count
|
||
LW 0,0 ;-Y, Count
|
||
LW 0,0 ;+Y, Count
|
||
LW 0,0 ;-Z, Count
|
||
LW 0,0 ;+Z, Count
|
||
JAPA_BUSTOUT1_DEC2
|
||
.LONG S_MAKE_DECISION ;FUNCTION
|
||
LW JAPA_GATE9_LEFT,0FFFFH ;-X, Count
|
||
LW JAPA_GATE9_RIGHT,0FFFFH ;+X, Count
|
||
LW 0,0 ;-Y, Count
|
||
LW 0,0 ;+Y, Count
|
||
LW 0,0 ;-Z, Count
|
||
LW JAPA_GATE9_FROM_STOP,0FFFFH ;+Z, Count
|
||
|
||
JAPA_BUSTOUT1_INTACT
|
||
.LONG S_DOZER_ACCEL ;Round corner and go right
|
||
.WORD 60 << 8 + M_Z << 3 + M_Z + M_X + M_ZREL
|
||
.LONG ROW2_Z2 ;Z Position target
|
||
.LONG CRATE_XVEL ;X Velocity target
|
||
.LONG 0 ;Z Velocity target
|
||
|
||
JAPA_ROW2_RIGHT_CK_GATE6
|
||
LLLW S_WAIT_FOR_COORD,XBASE,01490000H,1
|
||
|
||
.LONG S_CREATE_PROCR
|
||
.WORD PID_FORKLIFT
|
||
.LONG ROW3_PARMS,0,0,0,PROC_FORK_ROW ;Make a Fork lift cruise by
|
||
.WORD 0
|
||
|
||
.LONG S_JUMP_IF_FALSE,JAPA_GATE6_RIGHT_INTACT,GATES_BLOWN+(5*8)
|
||
|
||
LLLW S_WAIT_FOR_COORD,XBASE,01AC0000H,1
|
||
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE6_ZAP, 5, 80
|
||
|
||
JAPA_GATE6_RIGHT_INTACT
|
||
|
||
LLLW S_WAIT_FOR_COORD,XBASE,2840000H,1
|
||
|
||
.LONG S_JUMP_IF_FALSE,JAPA_GATE7_INTACT,GATES_BLOWN+(6*8)
|
||
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE7_ZAP, 5, 80
|
||
|
||
JAPA_GATE7_INTACT
|
||
LLLW S_WAIT_FOR_COORD,XBASE,02940000H,1
|
||
|
||
LWL S_X_DECEL_LIMIT,-800H,-CRATE_XVEL ;Start to head back the other way
|
||
|
||
.LONG JAPA_BUSTOUT1_REV_WAIT+M_JUMP ;Jump to wait Bustout 1 corner
|
||
|
||
|
||
*Box area A - Second decision (left)
|
||
JAP_BOXA_1_LEFT
|
||
LWL S_X_ACCEL_LIMIT,-1000H,-CRATE_XVEL ;Move left around square
|
||
|
||
JAPA_GATE4_WAIT
|
||
LLLW S_WAIT_FOR_COORD,XBASE,-021F0000H,1
|
||
|
||
.LONG S_JUMP_IF_FALSE,JAPA_GATE4_INTACT,GATES_BLOWN+(3*8)
|
||
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE4_ZAP, 5, 80
|
||
|
||
JAPA_GATE4_INTACT
|
||
LLLW S_WAIT_FOR_COORD,XBASE,-022F0000H,1
|
||
|
||
LWL S_X_DECEL_LIMIT,800H,CRATE_XVEL ;Start to head back the other way
|
||
|
||
.LONG JAPA_ROW2_RIGHT_CK_GATE2+M_JUMP ;Jump to wait for Gate 2
|
||
|
||
*Box area A - Second decision (right)
|
||
JAP_BOXA_1_RIGHT
|
||
LWL S_X_ACCEL_LIMIT,1000H,CRATE_XVEL ;Move right around square
|
||
|
||
JAPA_GATE5_WAIT
|
||
LLLW S_WAIT_FOR_COORD,XBASE,-0580000H,1
|
||
|
||
.LONG S_JUMP_IF_FALSE,JAPA_GATE5_INTACT,GATES_BLOWN+(4*8)
|
||
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE5_ZAP, 5, 80
|
||
|
||
JAPA_GATE5_INTACT
|
||
LLLW S_WAIT_FOR_COORD,XBASE,-0480000H,1
|
||
|
||
LWL S_X_DECEL_LIMIT,-800H,-CRATE_XVEL ;Start to head back the other way
|
||
|
||
.LONG JAPA_ROW2_LEFT_CK_GATE2+M_JUMP ;Jump to wait for Gate 4
|
||
|
||
*
|
||
* Cruising along ROW 3, check gates
|
||
*
|
||
JAPA_ROW3_LEFT_CK_GATE6
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW3_LEFT_CK_GATE9,GATES_BLOWN+(5*8)
|
||
|
||
LLLW S_WAIT_FOR_COORD,XBASE,22E0000H,1
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE6_REV_ZAP, 4, 80
|
||
|
||
JAPA_ROW3_LEFT_CK_GATE9
|
||
LLLW S_WAIT_FOR_COORD,XBASE,1270000H,1
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW3_LEFT_CK_BUSTOUT1,GATES_BLOWN+(8*8)
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW3_LEFT_GATE9_SOLO,BUSTOUTS+(0*8)
|
||
|
||
.LONG S_MAKE_DUAL_BUTTONS
|
||
LWW JAPA_GATE9_ZAP, 5, 80
|
||
LWW JAPA_BUSTOUT1_REV_ZAP, 4, 80
|
||
.LONG JAPA_ROW3_LEFT_CK_GATE5+M_JUMP
|
||
|
||
JAPA_ROW3_LEFT_GATE9_SOLO
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE9_ZAP, 5, 80
|
||
.LONG JAPA_ROW3_LEFT_CK_GATE5+M_JUMP
|
||
|
||
JAPA_ROW3_LEFT_CK_BUSTOUT1
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW3_LEFT_CK_GATE5,BUSTOUTS+(0*8)
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_BUSTOUT1_REV_ZAP, 4, 80
|
||
|
||
JAPA_ROW3_LEFT_CK_GATE5
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW3_LEFT_CK_GATE8,GATES_BLOWN+(4*8)
|
||
|
||
LLLW S_WAIT_FOR_COORD,XBASE,180000H,1
|
||
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE5_REV_ZAP, 4, 80
|
||
|
||
JAPA_ROW3_LEFT_CK_GATE8
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW3_LEFT_CK_GATE4,GATES_BLOWN+(7*8)
|
||
|
||
LLLW S_WAIT_FOR_COORD,XBASE,-07E0000H,1
|
||
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE8_ZAP, 5, 80
|
||
|
||
JAPA_ROW3_LEFT_CK_GATE4
|
||
LLLW S_WAIT_FOR_COORD,XBASE,-021F0000H,1
|
||
|
||
.LONG S_JUMP_IF_FALSE,JAPA_GATE4_REV_INTACT,GATES_BLOWN+(3*8)
|
||
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE4_REV_ZAP, 4, 80
|
||
|
||
JAPA_GATE4_REV_INTACT
|
||
LWL S_X_DECEL_LIMIT,800H,CRATE_XVEL ;Start to head back the other way
|
||
|
||
.LONG JAPA_ROW3_RIGHT_CK_GATE8+M_JUMP ;Jump wait for back right end
|
||
|
||
JAPA_GATE4_REV_ZAP
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 1000H,-248H,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL 175B0H,-3H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go backwards
|
||
.WORD 60 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG -2480000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG -CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
LLW S_WAIT_FOR_ZREL,15200H,1
|
||
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,ROW2_Z1,1 ;Get to the corner
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go left
|
||
.WORD 60 << 8 + M_Z << 3 + M_Z + M_X + M_ZREL
|
||
.LONG ROW2_Z1 ;Z Position target
|
||
.LONG CRATE_XVEL ;X Velocity target
|
||
.LONG 0 ;Z Velocity target
|
||
|
||
LW S_SET_WHAREA, AROW2A ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,ROW_DISPATCH+M_WAIT,0
|
||
|
||
JAPA_ROW2_RIGHT_CK_GATE2
|
||
.LONG S_JUMP_IF_FALSE,JAPA_GATE5_WAIT,GATES_BLOWN+(1*8)
|
||
|
||
LLLW S_WAIT_FOR_COORD,XBASE,-1460000H,1
|
||
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE2_REV_ZAP, 4, 80
|
||
|
||
.LONG JAPA_GATE5_WAIT+M_JUMP ;Jump to wait for Gate 5
|
||
|
||
JAPA_GATE2_REV_ZAP
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 1000H,-0F6H,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL ROW2_Z1,-3H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go backwards
|
||
.WORD 60 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG -0F60000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG -CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
LLW S_WAIT_FOR_ZREL,0C200H,1
|
||
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,ROW1_Z,1 ;Get to the corner
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go left
|
||
.WORD 60 << 8 + M_Z << 3 + M_Z + M_X + M_ZREL
|
||
.LONG ROW2_Z1 ;Z Position target
|
||
.LONG CRATE_XVEL ;X Velocity target
|
||
.LONG 0 ;Z Velocity target
|
||
|
||
LW S_SET_WHAREA, AROW1 ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,ROW_DISPATCH+M_WAIT,0
|
||
|
||
.long JAPA_GATE3_WAIT+M_JUMP ;Jump to exit line up
|
||
|
||
*
|
||
* Move right along back row (row 3)
|
||
*
|
||
JAPA_ROW3_RIGHT_CK_GATE8
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW3_RIGHT_CK_GATE5,GATES_BLOWN+(7*8)
|
||
|
||
LLLW S_WAIT_FOR_COORD,XBASE,-0C40000H,1
|
||
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE8_ZAP, 5, 80
|
||
|
||
JAPA_ROW3_RIGHT_CK_GATE5
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW3_RIGHT_CK_GATE9,GATES_BLOWN+(4*8)
|
||
|
||
LLLW S_WAIT_FOR_COORD,XBASE,-440000H,1
|
||
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE5_REV_ZAP, 4, 80
|
||
|
||
JAPA_ROW3_RIGHT_CK_GATE9
|
||
LLLW S_WAIT_FOR_COORD,XBASE,0B60000H,1
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW3_RIGHT_CK_BUSTOUT1,GATES_BLOWN+(8*8)
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW3_RIGHT_GATE9_SOLO,BUSTOUTS+(0*8)
|
||
|
||
.LONG S_MAKE_DUAL_BUTTONS
|
||
LWW JAPA_GATE9_ZAP, 5, 80
|
||
LWW JAPA_BUSTOUT1_REV_ZAP, 4, 80
|
||
.LONG JAPA_ROW3_RIGHT_CK_GATE6+M_JUMP
|
||
|
||
JAPA_ROW3_RIGHT_GATE9_SOLO
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE9_ZAP, 5, 80
|
||
.LONG JAPA_ROW3_RIGHT_CK_GATE6+M_JUMP
|
||
|
||
JAPA_ROW3_RIGHT_CK_BUSTOUT1
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW3_RIGHT_CK_GATE6,BUSTOUTS+(0*8)
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_BUSTOUT1_REV_ZAP, 4, 80
|
||
|
||
JAPA_ROW3_RIGHT_CK_GATE6
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW3_RIGHT_GATE6_INTACT,GATES_BLOWN+(5*8)
|
||
|
||
LLLW S_WAIT_FOR_COORD,XBASE,1AC0000H,1
|
||
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE6_REV_ZAP, 4, 80
|
||
|
||
JAPA_ROW3_RIGHT_GATE6_INTACT
|
||
LLLW S_WAIT_FOR_COORD,XBASE,02780000H,1
|
||
|
||
* We will try to go backwards if the gate is blown behind us
|
||
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW3_RIGHT_GATE7_INTACT,GATES_BLOWN+(6*8)
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW3_RIGHT_GATE7_SOLO,GATES_BLOWN+(9*8)
|
||
|
||
* Both gates are blown, let's drop two buttons
|
||
.LONG S_MAKE_DUAL_BUTTONS
|
||
LWW JAPA_GATE10_ZAP, 5, 80
|
||
LWW JAPA_GATE7_REV_ZAP, 4, 80
|
||
.LONG JAPA_ROW3_RIGHT_REV+M_JUMP ;Jump to reverse direction
|
||
|
||
JAPA_ROW3_RIGHT_GATE7_SOLO
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE7_REV_ZAP, 4, 80
|
||
.LONG JAPA_ROW3_RIGHT_REV+M_JUMP ;Jump to reverse direction
|
||
|
||
*We've hit right side and gate 7 is still there, let's see if gate 10 is gone
|
||
JAPA_ROW3_RIGHT_GATE7_INTACT
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW3_RIGHT_REV,GATES_BLOWN+(9*8)
|
||
|
||
*Throw up a solo zoom in to gate 10 button here
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE10_ZAP, 5, 80
|
||
|
||
JAPA_ROW3_RIGHT_REV
|
||
LLLW S_WAIT_FOR_COORD,XBASE,02880000H,1
|
||
|
||
LWL S_X_DECEL_LIMIT,-800H,-CRATE_XVEL ;Start to head back the other way
|
||
|
||
.long JAPA_ROW3_LEFT_CK_GATE6+M_JUMP ;Jump to exit line up
|
||
|
||
*
|
||
* Cruising along Row 4
|
||
*
|
||
JAPA_ROW4_RIGHT_CK_GATE12
|
||
LLLW S_WAIT_FOR_COORD,XBASE,0E80000H,1
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW4_RIGHT_CK_GATE13,GATES_BLOWN+(11*8)
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE12_ZAP, 5, 80
|
||
|
||
JAPA_ROW4_RIGHT_CK_GATE13
|
||
LLLW S_WAIT_FOR_COORD,XBASE,2840000H,1
|
||
.LONG S_JUMP_IF_FALSE,JAPA_GATE13_INTACT,GATES_BLOWN+(12*8)
|
||
.LONG S_JUMP_IF_FALSE,JAPA_GATE13_SOLO,BUSTOUTS+(2*8)
|
||
|
||
.LONG S_MAKE_DUAL_BUTTONS
|
||
LWW JAPA_GATE13_ZAP, 5, 80
|
||
LWW JAPA_GATE10_REV_ZAP, 4, 80
|
||
.LONG JAPA_BUSTOUT3_REV_INTACT+M_JUMP
|
||
|
||
JAPA_GATE13_SOLO
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE13_ZAP, 5, 80
|
||
.LONG JAPA_BUSTOUT3_REV_INTACT+M_JUMP
|
||
|
||
JAPA_GATE13_INTACT
|
||
.LONG S_JUMP_IF_FALSE,JAPA_BUSTOUT3_REV_INTACT,BUSTOUTS+(2*8)
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE10_REV_ZAP, 4, 80
|
||
|
||
JAPA_BUSTOUT3_REV_INTACT
|
||
LLLW S_WAIT_FOR_COORD,XBASE,02940000H,1
|
||
LWL S_X_DECEL_LIMIT,-800H,-CRATE_XVEL ;Start to head back the other way
|
||
.LONG JAPA_ROW4_LEFT_CK_GATE12+M_JUMP
|
||
|
||
JAPA_ROW4_LEFT_CK_GATE12
|
||
LLLW S_WAIT_FOR_COORD,XBASE,15C0000H,1
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW4_LEFT_CK_GATE11,GATES_BLOWN+(11*8)
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE12_ZAP, 5, 80
|
||
|
||
JAPA_ROW4_LEFT_CK_GATE11
|
||
LLLW S_WAIT_FOR_COORD,XBASE,-690000H,1
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW4_LEFT_GATE11_INTACT,GATES_BLOWN+(10*8)
|
||
.LONG S_JUMP_IF_FALSE,JAPA_GATE11_SOLO,GATES_BLOWN+(7*8)
|
||
|
||
.LONG S_MAKE_DUAL_BUTTONS
|
||
LWW JAPA_GATE11_ZAP, 5, 80
|
||
LWW JAPA_GATE8_REV_ZAP, 4, 80
|
||
.LONG JAPA_ROW4_LEFT_GATE8_INTACT+M_JUMP
|
||
|
||
JAPA_GATE11_SOLO
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE11_ZAP, 5, 80
|
||
.LONG JAPA_ROW4_LEFT_GATE8_INTACT+M_JUMP
|
||
|
||
JAPA_ROW4_LEFT_GATE11_INTACT
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW4_LEFT_GATE8_INTACT,GATES_BLOWN+(7*8)
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE8_REV_ZAP, 4, 80
|
||
|
||
JAPA_ROW4_LEFT_GATE8_INTACT
|
||
LLLW S_WAIT_FOR_COORD,XBASE,-790000H,1
|
||
LWL S_X_DECEL_LIMIT,800H,CRATE_XVEL ;Start to head back the other way
|
||
.LONG JAPA_ROW4_RIGHT_CK_GATE12+M_JUMP
|
||
|
||
*
|
||
* Cruising along Row 5
|
||
*
|
||
JAPA_ROW5_RIGHT_CK_GATE14
|
||
LLLW S_WAIT_FOR_COORD,XBASE,980000H,1
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW5_RIGHT_CK_GATE12,GATES_BLOWN+(13*8)
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE14_ZAP, 5, 80
|
||
|
||
JAPA_ROW5_RIGHT_CK_GATE12
|
||
LLLW S_WAIT_FOR_COORD,XBASE,10D0000H,1
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW5_RIGHT_CK_GATE15,GATES_BLOWN+(11*8)
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE12_REV_ZAP, 4, 80
|
||
|
||
JAPA_ROW5_RIGHT_CK_GATE15
|
||
LLLW S_WAIT_FOR_COORD,XBASE,1AD0000H,1
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW5_RIGHT_CK_GATE16,GATES_BLOWN+(14*8)
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE15_ZAP, 5, 80
|
||
|
||
JAPA_ROW5_RIGHT_CK_GATE16
|
||
LLLW S_WAIT_FOR_COORD,XBASE,2840000H,1
|
||
.LONG S_JUMP_IF_FALSE,JAPA_GATE16_INTACT,GATES_BLOWN+(15*8)
|
||
.LONG S_JUMP_IF_FALSE,JAPA_GATE16_SOLO,GATES_BLOWN+(12*8)
|
||
|
||
.LONG S_MAKE_DUAL_BUTTONS
|
||
LWW JAPA_GATE16_ZAP, 5, 80
|
||
LWW JAPA_GATE13_REV_ZAP, 4, 80
|
||
.LONG JAPA_GATE13_REV_INTACT+M_JUMP
|
||
|
||
JAPA_GATE16_SOLO
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE16_ZAP, 5, 80
|
||
.LONG JAPA_GATE13_REV_INTACT+M_JUMP
|
||
|
||
JAPA_GATE16_INTACT
|
||
.LONG S_JUMP_IF_FALSE,JAPA_GATE13_REV_INTACT,GATES_BLOWN+(12*8)
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE13_REV_ZAP, 4, 80
|
||
|
||
JAPA_GATE13_REV_INTACT
|
||
LLLW S_WAIT_FOR_COORD,XBASE,02940000H,1
|
||
LWL S_X_DECEL_LIMIT,-800H,-CRATE_XVEL ;Start to head back the other way
|
||
.LONG JAPA_ROW5_LEFT_CK_GATE15+M_JUMP
|
||
|
||
JAPA_ROW5_LEFT_CK_GATE15
|
||
LLLW S_WAIT_FOR_COORD,XBASE,2210000H,1
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW5_LEFT_CK_GATE12,GATES_BLOWN+(14*8)
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE15_ZAP, 5, 80
|
||
|
||
JAPA_ROW5_LEFT_CK_GATE12
|
||
LLLW S_WAIT_FOR_COORD,XBASE,1690000H,1
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW5_LEFT_CK_GATE14,GATES_BLOWN+(11*8)
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE12_REV_ZAP, 4, 80
|
||
|
||
JAPA_ROW5_LEFT_CK_GATE14
|
||
LLLW S_WAIT_FOR_COORD,XBASE,0DE0000H,1
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW5_LEFT_CK_GATE11,GATES_BLOWN+(13*8)
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE14_ZAP, 5, 80
|
||
|
||
JAPA_ROW5_LEFT_CK_GATE11
|
||
LLLW S_WAIT_FOR_COORD,XBASE,-690000H,1
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW5_LEFT_GATE11_INTACT,GATES_BLOWN+(10*8)
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE11_REV_ZAP, 4, 80
|
||
|
||
JAPA_ROW5_LEFT_GATE11_INTACT
|
||
LLLW S_WAIT_FOR_COORD,XBASE,-790000H,1
|
||
LWL S_X_DECEL_LIMIT,800H,CRATE_XVEL ;Start to head back the other way
|
||
.LONG JAPA_ROW5_RIGHT_CK_GATE14+M_JUMP
|
||
|
||
*
|
||
* Cruising down row 6
|
||
*
|
||
|
||
JAPA_ROW6_LEFT_CK_GATE15
|
||
LLLW S_WAIT_FOR_COORD,XBASE,20C0000H,1
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW6_LEFT_GATE15_INTACT,GATES_BLOWN+(14*8)
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE15_REV_ZAP, 4, 80
|
||
|
||
JAPA_ROW6_LEFT_GATE15_INTACT
|
||
LLLW S_WAIT_FOR_COORD,XBASE,1FC0000H,1
|
||
LWL S_X_DECEL_LIMIT,800H,CRATE_XVEL ;Start to head back the other way
|
||
.LONG JAPA_ROW6_RIGHT_CK_GATE19+M_JUMP
|
||
|
||
JAPA_ROW6_LEFT_CK_GATE18
|
||
LLLW S_WAIT_FOR_COORD,XBASE,1480000H,1
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW6_LEFT_CK_GATE14,GATES_BLOWN+(17*8)
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE18_ZAP, 5, 60
|
||
JAPA_ROW6_LEFT_CK_GATE14
|
||
LLLW S_WAIT_FOR_COORD,XBASE,0F30000H,1
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW6_LEFT_CK_GATE17,GATES_BLOWN+(13*8)
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE14_REV_ZAP, 4, 80
|
||
JAPA_ROW6_LEFT_CK_GATE17
|
||
LLLW S_WAIT_FOR_COORD,XBASE,220000H,1
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW6_LEFT_GATE17_INTACT,GATES_BLOWN+(16*8)
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE17_ZAP, 5, 80
|
||
JAPA_ROW6_LEFT_GATE17_INTACT
|
||
LLLW S_WAIT_FOR_COORD,XBASE,120000H,1
|
||
LWL S_X_DECEL_LIMIT,800H,CRATE_XVEL ;Start to head back the other way
|
||
.LONG JAPA_ROW6_RIGHT_CK_GATE14+M_JUMP
|
||
|
||
JAPA_ROW6_RIGHT_CK_GATE14
|
||
LLLW S_WAIT_FOR_COORD,XBASE,670000H,1
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW6_RIGHT_CK_GATE18,GATES_BLOWN+(13*8)
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE14_REV_ZAP, 4, 80
|
||
JAPA_ROW6_RIGHT_CK_GATE18
|
||
LLLW S_WAIT_FOR_COORD,XBASE,0E40000H,1
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW6_RIGHT_GATE18_INTACT,GATES_BLOWN+(17*8)
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE18_ZAP, 5, 80
|
||
JAPA_ROW6_RIGHT_GATE18_INTACT
|
||
LLLW S_WAIT_FOR_COORD,XBASE,14B0000H,1
|
||
LWL S_X_DECEL_LIMIT,-800H,-CRATE_XVEL ;Start to head back the other way
|
||
.LONG JAPA_ROW6_LEFT_CK_GATE18+M_JUMP
|
||
|
||
JAPA_ROW6_RIGHT_CK_GATE19
|
||
LLLW S_WAIT_FOR_COORD,XBASE,2840000H,1
|
||
.LONG S_JUMP_IF_FALSE,JAPA_GATE19_INTACT,GATES_BLOWN+(18*8)
|
||
.LONG S_JUMP_IF_FALSE,JAPA_GATE19_SOLO,GATES_BLOWN+(15*8)
|
||
|
||
.LONG S_MAKE_DUAL_BUTTONS
|
||
LWW JAPA_GATE19_ZAP, 5, 80
|
||
LWW JAPA_GATE16_REV_ZAP, 4, 80
|
||
.LONG JAPA_GATE16_REV_INTACT+M_JUMP ;Jump to reverse direction
|
||
|
||
JAPA_GATE19_SOLO
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE19_ZAP, 5, 80
|
||
.LONG JAPA_GATE16_REV_INTACT+M_JUMP
|
||
|
||
JAPA_GATE19_INTACT
|
||
.LONG S_JUMP_IF_FALSE,JAPA_GATE16_REV_INTACT,GATES_BLOWN+(15*8)
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE16_REV_ZAP, 4, 80
|
||
|
||
JAPA_GATE16_REV_INTACT
|
||
LLLW S_WAIT_FOR_COORD,XBASE,02940000H,1
|
||
LWL S_X_DECEL_LIMIT,-800H,-CRATE_XVEL ;Start to head back the other way
|
||
.LONG JAPA_ROW6_LEFT_CK_GATE15+M_JUMP
|
||
|
||
*
|
||
* Now we're in the exit area
|
||
*
|
||
JAPA_ROW7_RIGHT_CK_EXIT
|
||
LLLW S_WAIT_FOR_COORD,XBASE,0360000H,1
|
||
|
||
.LONG JAPA_ROW7_CENTER+M_JUMP
|
||
|
||
JAPA_ROW7_LEFT_CK_EXIT
|
||
LLLW S_WAIT_FOR_COORD,XBASE,2560000H,1
|
||
|
||
JAPA_ROW7_CENTER
|
||
.LONG S_DOZER_ACCEL ;Round corner and go backwards
|
||
.WORD 80 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG 1460000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LWWWLW S_ACCEL_TO_POINT,-240,146H,0,46000H,0 ;Line up last crates
|
||
|
||
LW S_DECEL_TO_STOP,4
|
||
|
||
LWWWLW S_ACCEL_TO_POINT,-10,146H,0,45800H,0 ;Line up last crates
|
||
|
||
.LONG S_STOP_SCROLL
|
||
|
||
LLW S_SET_WORD,CRATE_WAIT,45*60
|
||
JAPA_BUSTOUT5_INTACT
|
||
LW S_WAIT_HERE,1
|
||
.LONG S_BUSTOUT5_CK
|
||
.LONG S_JUMP_IF_FALSE,JAPA_BUSTOUT5_INTACT,BUSTOUTS+(4*8)
|
||
|
||
JAPA_BUSTOUT5_CONTINUE
|
||
.LONG S_CHANGE_PORTAL_GUNVECT, METAL_GUNVECT, DUMCOLL
|
||
|
||
LW S_DELETE_ENEMY_OID, OID_NONBOY
|
||
|
||
LW S_DELETE_ENEMY_OID, OID_NINJA
|
||
|
||
LLW S_DISPATCH_HERE,DUMMY_DISPATCH+M_WAIT,0 ;Dispatch end
|
||
|
||
LW S_WAIT_HERE,60
|
||
|
||
LWWWLW S_ACCEL_TO_POINT,-240,146H,0,4C090H,0 ;Line up last crates
|
||
|
||
LW S_DECEL_TO_STOP,4
|
||
|
||
* This is where we will portal through to the Vogel background
|
||
JAPA_PORTAL
|
||
.LONG S_SET_VECTOR_TABLE, JAP_FACTORY_VECT_TABLE
|
||
|
||
.LONG S_CREATE_PROCR
|
||
.WORD PID_IND
|
||
.LONG SND_BIG_DOOR,22,0,0,PROC_SND ;Delay start of big door
|
||
.WORD 0
|
||
|
||
LWL S_CREATE_PROC,PID_IND,PROC_FACTORY_XFADE
|
||
|
||
LLW S_SET_WORD,OBJENEMIES,0 ;Kill enemy gens
|
||
|
||
LLW S_SET_WORD,SOCRATES,0 ;No longer in the crates
|
||
|
||
.LONG S_SET_LONG, WAVE_IPLANE, JFACTR_BGND
|
||
|
||
.LONG S_ADJUST_YWORLD, GXTOWER1
|
||
|
||
|
||
.LONG S_LEAVE_UNIV ; Set up and enter new universe
|
||
.word 22 ; ticks until portal anim starts
|
||
.long GXTOWER1 ; name of universe
|
||
; .long -0C643H,0280000h,0D80000h ; Z, X, Y offsets
|
||
.long -0C643H,0160000h,0D80000h ; Z, X, Y offsets
|
||
.WORD 0
|
||
|
||
LW S_WAIT_HERE,80
|
||
|
||
.LONG S_SET_LONG, WYBUFFER, 0A80000H
|
||
|
||
LWL S_Z_ACCEL_LIMIT,8H,CRATE_ZVEL ;Head for first gate
|
||
|
||
LW S_WAIT_HERE,60
|
||
|
||
LW S_ADJUST_YHALF,6 ;Adjust YHALF
|
||
|
||
; LWWWLW S_ACCEL_TO_POINT,-140,28H,0D8H,-0D200H,0;Pull back so we are lined up
|
||
LWWWLW S_ACCEL_TO_POINT,-140,16H,0D8H,-0D200H,0;Pull back so we are lined up
|
||
|
||
LW S_DECEL_TO_STOP,4
|
||
|
||
; LWWWLW S_ACCEL_TO_POINT,-25,28H,0D8H,-0D000H,0 ;Pull back so we are lined up
|
||
LWWWLW S_ACCEL_TO_POINT,-25,16H,0D8H,-0D000H,0 ;Pull back so we are lined up
|
||
|
||
.LONG S_STOP_SCROLL
|
||
|
||
.LONG S_CALL, INIT_UCHECK_TBL
|
||
|
||
.LONG JAP_FACTORY_SCROLL+M_JUMP
|
||
|
||
.LONG 0
|
||
|
||
|
||
JAPA_GATE7_REV_ZAP
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 1000H,2A9H,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL 19000H,-3H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
JAPA_GATE7_REV_GO
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go backwards
|
||
.WORD 60 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG 2A90000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG -CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
LLW S_WAIT_FOR_ZREL,ROW2_Z2,1 ;Get to the corner
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go left
|
||
.WORD 60 << 8 + M_Z << 3 + M_Z + M_X + M_ZREL
|
||
.LONG ROW2_Z2 ;Z Position target
|
||
.LONG -CRATE_XVEL ;X Velocity target
|
||
.LONG 0 ;Z Velocity target
|
||
|
||
LW S_SET_WHAREA, AROW2B ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,ROW_DISPATCH+M_WAIT,0
|
||
|
||
JAPA_BUSTOUT1_REV_WAIT
|
||
.LONG S_JUMP_IF_FALSE,JAPA_GATE6_LEFT_INTACT,GATES_BLOWN+(5*8)
|
||
|
||
LLLW S_WAIT_FOR_COORD,XBASE,022E0000H,1
|
||
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE6_ZAP, 5, 80
|
||
|
||
JAPA_GATE6_LEFT_INTACT
|
||
LLLW S_WAIT_FOR_COORD,XBASE,01220000H,1
|
||
|
||
.LONG S_JUMP_IF_FALSE,JAPA_BUSTOUT1_INTACT2,BUSTOUTS+(0*8)
|
||
|
||
.LONG S_MAKE_DUAL_BUTTONS
|
||
LWW JAPA_BUSTOUT1_ZAP, 5, 80
|
||
LWW JAPA_GATE3_REV_ZAP, 4, 80
|
||
.LONG JAPA_ROW2_2_LEFT_REV+M_JUMP
|
||
|
||
JAPA_BUSTOUT1_INTACT2
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE3_REV_ZAP, 4, 80
|
||
JAPA_ROW2_2_LEFT_REV
|
||
LLLW S_WAIT_FOR_COORD,XBASE,01120000H,1
|
||
LWL S_X_DECEL_LIMIT,800H,CRATE_XVEL ;Start to head back the other way
|
||
.LONG JAPA_ROW2_RIGHT_CK_GATE6+M_JUMP ;Jump wait for next gate
|
||
|
||
JAPA_GATE3_REV_ZAP
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 1000H,0F9H,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL ROW2_Z2,-3H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
JAPA_GATE3_REV_GO
|
||
.LONG S_DOZER_ACCEL ;Round corner and go backwards
|
||
.WORD 60 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG 0F90000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG -CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
LLW S_WAIT_FOR_ZREL, 0C200H,1
|
||
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,5980H,1 ;Get to the corner
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go left
|
||
.WORD 60 << 8 + M_Z << 3 + M_Z + M_X + M_ZREL
|
||
.LONG ROW1_Z ;Z Position target
|
||
.LONG -CRATE_XVEL ;X Velocity target
|
||
.LONG 0 ;Z Velocity target
|
||
|
||
LW S_SET_WHAREA, AROW1 ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,ROW_DISPATCH+M_WAIT,0
|
||
|
||
.long JAPA_GATE2_WAIT+M_JUMP ;Jump to first decision point
|
||
|
||
*Come here to zap us right through the first gate
|
||
JAPA_GATE1_ZAP
|
||
|
||
; .LONG S_SET_LONG, ENEMY_ZBASE, ROW1_Z ;Set enemy offset Z
|
||
|
||
LW S_SET_WHAREA, AROW1 ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_FORK_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 800H,1AH,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL -1000H,-2H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go in
|
||
.WORD 10 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG 01A0000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
.long JAPA_GATE1_PASS+M_JUMP ;Jump to Gate 1 pass through
|
||
|
||
*Come here to zap us right through Gate 2
|
||
JAPA_GATE2_ZAP
|
||
|
||
LW S_SET_WHAREA, AROW2A ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 800H,-0F6H,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL 8130H,-2H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go in
|
||
.WORD 10 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG -0F60000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
; .LONG S_SET_LONG, ENEMY_ZBASE, ROW2_Z1 ;Set enemy offset Z
|
||
|
||
LLW S_WAIT_FOR_ZREL,9730H,1
|
||
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,ROW2_Z1,1 ;Get to inner square
|
||
|
||
LW S_DECEL_TO_STOP,4
|
||
|
||
LWWWLW S_ACCEL_TO_POINT,-25,-0F6H,0,ROW2_Z1,0 ;Pull back so we are lined up
|
||
|
||
.LONG S_STOP_SCROLL
|
||
|
||
LW S_WAIT_HERE,10
|
||
|
||
.LONG S_MAKE_DECISION ;FUNCTION
|
||
LW JAP_BOXA_1_LEFT,0ffffh ;-X, Count
|
||
LW JAP_BOXA_1_RIGHT,0ffffh ;+X, Count
|
||
LW 0,0 ;-Y, Count
|
||
LW 0,0 ;+Y, Count
|
||
LW 0,0 ;-Z, Count
|
||
LW 0,0 ;+Z, Count
|
||
|
||
.long 0
|
||
|
||
*Come here to zap us right through Gate 3
|
||
JAPA_GATE3_ZAP
|
||
|
||
LW S_SET_WHAREA, AROW2B ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 800H,0F9H,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL 8130H,-2H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go in
|
||
.WORD 10 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG 0F90000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
.long JAPA_GATE3_PASS+M_JUMP ;Jump to gate pass through
|
||
|
||
*Come here to zap us right through Gate 4
|
||
JAPA_GATE4_ZAP
|
||
|
||
LW S_SET_WHAREA, AROW3 ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 800H,-248H,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL 11131H,-2H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go in
|
||
.WORD 10 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG -2480000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
; .LONG S_SET_LONG, ENEMY_ZBASE, ROW3_Z ;Set enemy offset Z
|
||
|
||
LLW S_WAIT_FOR_ZREL,12731H,1
|
||
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,18608H,1 ;Get to the corner
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go right
|
||
.WORD 60 << 8 + M_Z << 3 + M_Z + M_X + M_ZREL
|
||
.LONG ROW3_Z ;Z Position target
|
||
.LONG CRATE_XVEL ;X Velocity target
|
||
.LONG 0 ;Z Velocity target
|
||
|
||
.LONG JAPA_ROW3_RIGHT_CK_GATE8+M_JUMP ;Jump wait for right end
|
||
|
||
*Come here to zap us right through Gate 5
|
||
JAPA_GATE5_ZAP
|
||
|
||
LW S_SET_WHAREA, AROW3 ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_FORK_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 800H,-2FH,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL 11131H,-2H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go in
|
||
.WORD 10 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG -2F0000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
; .LONG S_SET_LONG, ENEMY_ZBASE, ROW3_Z ;Set enemy offset Z
|
||
|
||
LLW S_WAIT_FOR_ZREL,12731H,1
|
||
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,ROW3_Z,1 ;Get to back row
|
||
|
||
LW S_DECEL_TO_STOP,4
|
||
|
||
LWWWLW S_ACCEL_TO_POINT,-25,-02FH,0,ROW3_Z,0 ;Pull back so we are lined up
|
||
|
||
.LONG S_STOP_SCROLL
|
||
|
||
LW S_WAIT_HERE,10
|
||
|
||
.LONG S_MAKE_DECISION ;FUNCTION
|
||
LW JAPA_GATE5_LEFT,0ffffh ;-X, Count
|
||
LW JAPA_GATE5_RIGHT,0ffffh ;+X, Count
|
||
LW 0,0 ;-Y, Count
|
||
LW 0,0 ;+Y, Count
|
||
LW 0,0 ;-Z, Count
|
||
LW 0,0 ;+Z, Count
|
||
|
||
JAPA_GATE5_LEFT
|
||
LWL S_X_ACCEL_LIMIT,-1000H,-CRATE_XVEL ;Move left from gate 5
|
||
.long JAPA_ROW3_LEFT_CK_GATE8+M_JUMP ;Wait for next gate
|
||
|
||
JAPA_GATE5_RIGHT
|
||
LWL S_X_ACCEL_LIMIT,1000H,CRATE_XVEL ;Move right from gate 5
|
||
.long JAPA_ROW3_RIGHT_CK_GATE9+M_JUMP ;Wait for next gate
|
||
|
||
JAPA_GATE5_REV_ZAP
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 1000H,-2FH,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL 175B0H,-3H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go backwards
|
||
.WORD 60 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG -2F0000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG -CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
LLW S_WAIT_FOR_ZREL,15200H,1
|
||
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,ROW2_Z1,1 ;Get to the corner
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go left
|
||
.WORD 60 << 8 + M_Z << 3 + M_Z + M_X + M_ZREL
|
||
.LONG ROW2_Z1 ;Z Position target
|
||
.LONG -CRATE_XVEL ;X Velocity target
|
||
.LONG 0 ;Z Velocity target
|
||
|
||
LW S_SET_WHAREA, AROW2A ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,ROW_DISPATCH+M_WAIT,0
|
||
|
||
JAPA_ROW2_LEFT_CK_GATE2
|
||
.LONG S_JUMP_IF_FALSE,JAPA_GATE4_WAIT,GATES_BLOWN+(1*8)
|
||
|
||
LLLW S_WAIT_FOR_COORD,XBASE,-0B60000H,1
|
||
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE2_REV_ZAP, 4, 80
|
||
|
||
.LONG JAPA_GATE4_WAIT+M_JUMP ;Jump to wait for Gate 5
|
||
|
||
*Come here to zap us right through Gate 6
|
||
JAPA_GATE6_ZAP
|
||
|
||
LW S_SET_WHAREA, AROW3 ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 800H,1EAH,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL 153A0H,-2H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go in
|
||
.WORD 10 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG 1EA0000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LLW S_WAIT_FOR_ZREL,169A0H,1
|
||
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,ROW3_Z,1 ;Get to back row
|
||
|
||
LW S_DECEL_TO_STOP,4
|
||
|
||
LWWWLW S_ACCEL_TO_POINT,-25,1EAH,0,ROW3_Z,0 ;Pull back so we are lined up
|
||
|
||
.LONG S_STOP_SCROLL
|
||
|
||
LW S_WAIT_HERE,10
|
||
|
||
.LONG S_MAKE_DECISION ;FUNCTION
|
||
LW JAPA_GATE6_LEFT,0FFFFH ;-X, Count
|
||
LW JAPA_GATE6_RIGHT,0FFFFH ;+X, Count
|
||
LW 0,0 ;-Y, Count
|
||
LW 0,0 ;+Y, Count
|
||
LW 0,0 ;-Z, Count
|
||
LW 0,0 ;+Z, Count
|
||
|
||
JAPA_GATE6_LEFT
|
||
LWL S_X_ACCEL_LIMIT,-1000H,-CRATE_XVEL ;Move left from gate 6
|
||
.long JAPA_ROW3_LEFT_CK_GATE9+M_JUMP ;Wait for next gate
|
||
|
||
JAPA_GATE6_RIGHT
|
||
LWL S_X_ACCEL_LIMIT,1000H,CRATE_XVEL ;Move right from gate 6
|
||
.long JAPA_ROW3_RIGHT_GATE6_INTACT+M_JUMP ;Wait for next gate
|
||
|
||
|
||
*Come here to zap us backwards through Gate 6
|
||
JAPA_GATE6_REV_ZAP
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 1000H,1EAH,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL 19000H,-3H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go backwards
|
||
.WORD 60 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG 1EA0000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG -CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LW S_WAIT_HERE,6
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,ROW2_Z2,1 ;Get to the corner
|
||
|
||
LW S_DECEL_TO_STOP,4
|
||
|
||
LWWWLW S_ACCEL_TO_POINT,-25,1EAH,0,ROW2_Z2,0 ;Pull up so we are lined up
|
||
|
||
.LONG S_STOP_SCROLL
|
||
|
||
LW S_WAIT_HERE,10
|
||
|
||
LW S_SET_WHAREA, AROW2B ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,ROW_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_MAKE_DECISION ;FUNCTION
|
||
LW JAPA_GATE6_REV_LEFT,0FFFFH ;-X, Count
|
||
LW JAPA_GATE6_REV_RIGHT,0FFFFH ;+X, Count
|
||
LW 0,0 ;-Y, Count
|
||
LW 0,0 ;+Y, Count
|
||
LW 0,0 ;-Z, Count
|
||
LW 0,0 ;+Z, Count
|
||
|
||
JAPA_GATE6_REV_LEFT
|
||
LWL S_X_ACCEL_LIMIT,-1000H,-CRATE_XVEL ;Move left from gate 6
|
||
.long JAPA_GATE6_LEFT_INTACT+M_JUMP ;Jump to gate pass through
|
||
|
||
JAPA_GATE6_REV_RIGHT
|
||
LWL S_X_ACCEL_LIMIT,1000H,CRATE_XVEL ;Move right from gate 6
|
||
.long JAPA_GATE6_RIGHT_INTACT+M_JUMP ;Jump to gate pass through
|
||
|
||
*Come here to zap us right through Gate 7
|
||
JAPA_GATE7_ZAP
|
||
|
||
LW S_SET_WHAREA, AROW3 ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 800H,2A9H,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL 153A0H,-2H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go in
|
||
.WORD 10 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG 2A90000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LLW S_WAIT_FOR_ZREL,17030H,1
|
||
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,18608H,1 ;Get to the corner
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go left
|
||
.WORD 60 << 8 + M_Z << 3 + M_Z + M_X + M_ZREL
|
||
.LONG ROW3_Z ;Z Position target
|
||
.LONG -CRATE_XVEL ;X Velocity target
|
||
.LONG 0 ;Z Velocity target
|
||
|
||
.LONG S_JUMP_IF_FALSE,JAPA_ROW3_LEFT_CK_GATE6,GATES_BLOWN+(9*8)
|
||
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE10_ZAP, 5, 60
|
||
|
||
.long JAPA_ROW3_LEFT_CK_GATE6+M_JUMP ;Jump to exit line up
|
||
|
||
*Come here to zap us right through Gate 8
|
||
JAPA_GATE8_ZAP
|
||
|
||
LW S_SET_WHAREA, AROW4 ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 800H,-97H,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL 1B930H,-2H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go in
|
||
.WORD 10 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG -970000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LLW S_WAIT_FOR_ZREL,1CF30H,1
|
||
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,ROW4_Z-3000H,1 ;Get to the corner
|
||
.LONG S_JUMP_IF_FALSE,JAPA_GATE8_ZAP_ROUND,GATES_BLOWN+(10*8)
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE11_GO, 5, 60
|
||
|
||
JAPA_GATE8_ZAP_ROUND
|
||
LLW S_WAIT_FOR_ZREL,ROW4_Z-0A90H,1 ;Get to the corner
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go right
|
||
.WORD 60 << 8 + M_Z << 3 + M_Z + M_X + M_ZREL
|
||
.LONG ROW4_Z ;Z Position target
|
||
.LONG CRATE_XVEL ;X Velocity target
|
||
.LONG 0 ;Z Velocity target
|
||
|
||
.LONG JAPA_ROW4_RIGHT_CK_GATE12+M_JUMP
|
||
|
||
JAPA_GATE8_REV_ZAP
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 1000H,-97H,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL ROW4_Z,-3H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
JAPA_GATE8_REV_GO
|
||
.LONG S_DOZER_ACCEL ;Round corner and go backwards
|
||
.WORD 60 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG -970000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG -CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
LLW S_WAIT_FOR_ZREL,1F9FFH,1
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,ROW3_Z,1 ;Get to the corner
|
||
LWWWLW S_ACCEL_TO_POINT,-5,-97H,0,ROW3_Z,0 ;Pull back so we are lined up
|
||
.LONG S_STOP_SCROLL
|
||
LW S_WAIT_HERE,10
|
||
|
||
LW S_SET_WHAREA, AROW3 ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,ROW_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_MAKE_DECISION ;FUNCTION
|
||
LW JAPA_GATE8_LEFT,0ffffh ;-X, Count
|
||
LW JAPA_GATE8_RIGHT,0ffffh ;+X, Count
|
||
LW 0,0 ;-Y, Count
|
||
LW 0,0 ;+Y, Count
|
||
LW 0,0 ;-Z, Count
|
||
LW 0,0 ;+Z, Count
|
||
|
||
JAPA_GATE8_LEFT
|
||
LWL S_X_ACCEL_LIMIT,-1000H,-CRATE_XVEL ;Move left from gate 6
|
||
.long JAPA_ROW3_LEFT_CK_GATE4+M_JUMP ;Jump to next gate check
|
||
|
||
JAPA_GATE8_RIGHT
|
||
LWL S_X_ACCEL_LIMIT,1000H,CRATE_XVEL ;Move right from gate 6
|
||
.long JAPA_ROW3_RIGHT_CK_GATE5+M_JUMP ;Jump to next gate check
|
||
|
||
*Come here to zap us right through Gate 9
|
||
JAPA_GATE9_FROM_STOP
|
||
LWWWLW S_ACCEL_TO_POINT,-60,0F0H,0,1B930H,0
|
||
.LONG JAPA_GATE9_GO+M_JUMP
|
||
JAPA_GATE9_ZAP
|
||
|
||
LLW S_DISPATCH_HERE,DUMMY_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 800H,0F0H,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL 1B930H,-2H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
JAPA_GATE9_GO
|
||
.LONG S_CREATE_PROCR
|
||
.word PID_IND
|
||
.long 0,0,0,02712EH,FLOAT_ZFAR
|
||
.word 0
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go in
|
||
.WORD 10 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG 0F00000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LLW S_WAIT_FOR_ZREL,1C600H,1
|
||
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,1F200H,1 ;Get to the end
|
||
|
||
LW S_DECEL_TO_STOP,4
|
||
|
||
.LONG S_STOP_SCROLL
|
||
|
||
LLW S_DISPATCH_HERE,DEADEND_DISPATCH+M_WAIT,0
|
||
|
||
LW S_WAIT_HERE,60
|
||
|
||
.LONG S_JUMP_IF_FALSE,JAPA_GATE9_NOMAP,BUSTOUTS+(1*8)
|
||
|
||
LLW S_DISPATCH_HERE,DUMMY_DISPATCH+M_WAIT,0
|
||
|
||
LW S_WAIT_HERE,300
|
||
|
||
JAPA_GATE9_NOMAP
|
||
LWWWLW S_ACCEL_TO_POINT,-25,0F0H,0,1F000H,0
|
||
|
||
LLW S_DISPATCH_HERE,DUMMY_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,1B800H,1
|
||
|
||
LLW S_SET_WORD, SCROLLKILL, 1 ;STOP FLOATING ZFAR
|
||
|
||
.LONG S_JUMP_IF_TRUE,JAPA_GATE9_DEC2,BUSTOUTS+(0*8)
|
||
|
||
LLW S_WAIT_FOR_ZREL,1A198H,1 ;Get to the row
|
||
|
||
LW S_DECEL_TO_STOP,4
|
||
|
||
LWWWLW S_ACCEL_TO_POINT,-5,0F0H,0,ROW3_Z,0 ;Pull back so we are lined up
|
||
|
||
.LONG S_STOP_SCROLL
|
||
|
||
LW S_WAIT_HERE,10
|
||
|
||
LW S_SET_WHAREA, AROW3 ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,ROW_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_MAKE_DECISION ;FUNCTION
|
||
LW JAPA_GATE9_LEFT,0ffffh ;-X, Count
|
||
LW JAPA_GATE9_RIGHT,0ffffh ;+X, Count
|
||
LW 0,0 ;-Y, Count
|
||
LW 0,0 ;+Y, Count
|
||
LW 0,0 ;-Z, Count
|
||
LW 0,0 ;+Z, Count
|
||
|
||
JAPA_GATE9_DEC2
|
||
.LONG S_MAKE_DUAL_BUTTONS
|
||
LWW JAPA_ROW3_GATE9_LEFT_ZAP, 0, 60
|
||
LWW JAPA_ROW3_GATE9_RIGHT_ZAP, 1, 60
|
||
.LONG JAPA_BUSTOUT1_REV_GO+M_JUMP
|
||
|
||
|
||
JAPA_GATE9_LEFT
|
||
LWL S_X_ACCEL_LIMIT,-1000H,-CRATE_XVEL ;Move left from gate
|
||
.long JAPA_ROW3_LEFT_CK_GATE5+M_JUMP ;Jump to next gate check
|
||
|
||
JAPA_GATE9_RIGHT
|
||
LWL S_X_ACCEL_LIMIT,1000H,CRATE_XVEL ;Move right from gate
|
||
.long JAPA_ROW3_RIGHT_CK_GATE6+M_JUMP ;Jump to next gate check
|
||
|
||
*Come here to zap us right through Gate 10
|
||
JAPA_GATE10_ZAP
|
||
.LONG S_JUMP_IF_TRUE,JAPA_BUSTOUT3_NO_FLOAT_ZFAR,BUSTOUTS+(2*8)
|
||
|
||
.LONG S_CREATE_PROCR
|
||
.word PID_IND
|
||
.long 0,0,0,029FBCH,FLOAT_ZFAR
|
||
.word 0
|
||
JAPA_BUSTOUT3_NO_FLOAT_ZFAR
|
||
|
||
.LONG S_SET_LONG, YSCROLL, 0H ;Clear for safety
|
||
|
||
LLW S_DISPATCH_HERE,DUMMY_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 800H,2A9H,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL 1B930H,-2H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go in
|
||
.WORD 10 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG 2A90000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LLW S_WAIT_FOR_ZREL,1CF30H,1
|
||
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
.LONG S_JUMP_IF_FALSE,JAPA_BUSTOUT3_INTACT,BUSTOUTS+(2*8)
|
||
|
||
LLW S_SET_WORD, SCROLLKILL, 1 ;STOP FLOATING ZFAR
|
||
|
||
JAPA_BUSTOUT3_PASS
|
||
|
||
LW S_SET_WHAREA, AROW4 ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
LLW S_WAIT_FOR_ZREL,ROW4_Z-3000H,1 ;Get to the corner
|
||
|
||
.LONG S_JUMP_IF_FALSE,JAPA_GATE10_ZAP_ROUND,GATES_BLOWN+(12*8)
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE13_GO, 5, 60
|
||
|
||
JAPA_GATE10_ZAP_ROUND
|
||
LLW S_WAIT_FOR_ZREL,ROW4_Z-0A90H,1 ;Get to the corner
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go right
|
||
.WORD 60 << 8 + M_Z << 3 + M_Z + M_X + M_ZREL
|
||
.LONG ROW4_Z ;Z Position target
|
||
.LONG -CRATE_XVEL ;X Velocity target
|
||
.LONG 0 ;Z Velocity target
|
||
|
||
.LONG JAPA_ROW4_LEFT_CK_GATE12+M_JUMP
|
||
|
||
JAPA_BUSTOUT3_INTACT
|
||
LLW S_WAIT_FOR_ZREL,23000H,1 ;Get to the end
|
||
.LONG S_JUMP_IF_TRUE,JAPA_BUSTOUT3_LAST_CHANCE,BUSTOUTS+(2*8)
|
||
LW S_DECEL_TO_STOP,5
|
||
.LONG S_JUMP_IF_TRUE,JAPA_BUSTOUT3_LAST_CHANCE,BUSTOUTS+(2*8)
|
||
|
||
LLW S_DISPATCH_HERE,DEADEND_DISPATCH+M_WAIT,0
|
||
|
||
LWWWLW S_ACCEL_TO_POINT,-80,2A9H,0,1FAD0H,0
|
||
|
||
LLW S_DISPATCH_HERE,DUMMY_DISPATCH+M_WAIT,0
|
||
|
||
JAPA_GATE10_REV_JUMP
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,1B930H,1 ;Hit the ground running
|
||
|
||
LLW S_SET_WORD, SCROLLKILL, 1 ;STOP FLOATING ZFAR
|
||
|
||
LW S_SET_WHAREA, AROW3 ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,ROW_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_JUMP_IF_FALSE,JAPA_GATE10_REV_WAIT_ROUND,GATES_BLOWN+(6*8)
|
||
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_ROW3_LEFT_ZAP, 0, 60
|
||
.long JAPA_GATE7_REV_ZAP+M_JUMP ;Continue reversing through gate
|
||
|
||
JAPA_GATE10_REV_WAIT_ROUND
|
||
LLW S_WAIT_FOR_ZREL,ROW3_Z+0A90H,1 ;Get to the corner
|
||
|
||
; .LONG S_JUMP_IF_TRUE,JAPA_GATE10_PULL_CHOICE,GATES_BLOWN+(6*8)
|
||
|
||
JAPA_GATE10_REV_ROUND
|
||
.LONG S_SET_LONG, YSCROLL, 0H ;Clear for safety
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go left
|
||
.WORD 60 << 8 + M_Z << 3 + M_Z + M_X + M_ZREL
|
||
.LONG ROW3_Z ;Z Position target
|
||
.LONG -CRATE_XVEL ;X Velocity target
|
||
.LONG 0 ;Z Velocity target
|
||
|
||
.LONG JAPA_ROW3_LEFT_CK_GATE6+M_JUMP ;Jump to wait for left side of backrow
|
||
|
||
JAPA_BUSTOUT3_LAST_CHANCE
|
||
|
||
LLW S_SET_WORD, SCROLLKILL, 1 ;STOP FLOATING ZFAR
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go in
|
||
.WORD 60 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG 2A90000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
.LONG JAPA_BUSTOUT3_PASS+M_JUMP ;Jump, wait for right side of ROW 4
|
||
|
||
JAPA_GATE10_REV_ZAP
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 1000H,2A9H,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL ROW4_Z,-3H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
JAPA_GATE10_REV_GO
|
||
.LONG S_DOZER_ACCEL ;Round corner and go backwards
|
||
.WORD 60 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG 2A90000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG -CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
LLW S_WAIT_FOR_ZREL,1F000H,1
|
||
|
||
.LONG JAPA_GATE10_REV_JUMP+M_JUMP
|
||
|
||
;JAPA_GATE10_PULL_CHOICE
|
||
; LW S_DECEL_TO_STOP,4
|
||
; LWWWLW S_ACCEL_TO_POINT,15,2A9H,0,ROW3_Z,0 ;Pull back so we are lined up
|
||
; .LONG S_STOP_SCROLL
|
||
; LW S_WAIT_HERE,10
|
||
|
||
; .LONG S_MAKE_DECISION ;FUNCTION
|
||
; LW JAPA_GATE10_PULL_LEFT,0ffffh ;-X, Count
|
||
; LW 0,0 ;+X, Count
|
||
; LW 0,0 ;-Y, Count
|
||
; LW 0,0 ;+Y, Count
|
||
; LW JAPA_GATE7_REV_GO,0FFFFH ;-Z, Count
|
||
; LW 0,0 ;+Z, Count
|
||
|
||
;JAPA_GATE10_PULL_LEFT
|
||
; LWL S_X_ACCEL_LIMIT,-1000H,-CRATE_XVEL ;Move left from gate 10
|
||
; .long JAPA_ROW3_LEFT_CK_GATE6+M_JUMP ;Jump to next gate check
|
||
|
||
*Come here to zap us right through Gate 11
|
||
JAPA_GATE11_ZAP
|
||
|
||
LW S_SET_WHAREA, AROW5 ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 800H,-8EH,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL 29D9DH,-2H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
JAPA_GATE11_GO
|
||
.LONG S_DOZER_ACCEL ;Round corner and go in
|
||
.WORD 10 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG -8E0000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LLW S_WAIT_FOR_ZREL,2B38DH,1
|
||
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,ROW5_Z-0A90H,1 ;Get to the corner
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go right
|
||
.WORD 60 << 8 + M_Z << 3 + M_Z + M_X + M_ZREL
|
||
.LONG ROW5_Z ;Z Position target
|
||
.LONG CRATE_XVEL ;X Velocity target
|
||
.LONG 0 ;Z Velocity target
|
||
|
||
.LONG JAPA_ROW5_RIGHT_CK_GATE14+M_JUMP
|
||
|
||
|
||
JAPA_GATE11_REV_ZAP
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 1000H,-8EH,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL ROW5_Z,-3H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
.LONG S_DOZER_ACCEL ;Pull straight back now
|
||
.WORD 60 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG -8E0000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG -CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
LLW S_WAIT_FOR_ZREL,2D200H,1
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,ROW4_Z+0A90H,1 ;Get to the corner
|
||
|
||
.LONG S_JUMP_IF_FALSE,JAPA_GATE11_REV_ROUND,GATES_BLOWN+(7*8)
|
||
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_ROW4_RIGHT_ZAP, 1, 80
|
||
|
||
LWWWLW S_ACCEL_TO_POINT,-20,-97H,0,ROW4_Z,0
|
||
|
||
LW S_SET_WHAREA, AROW4 ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,ROW_DISPATCH+M_WAIT,0
|
||
|
||
.long JAPA_GATE8_REV_GO+M_JUMP ;Jump to Rev 8
|
||
|
||
JAPA_GATE11_REV_ROUND
|
||
.LONG S_DOZER_ACCEL ;Round corner and go right
|
||
.WORD 60 << 8 + M_Z << 3 + M_Z + M_X + M_ZREL
|
||
.LONG ROW4_Z ;Z Position target
|
||
.LONG CRATE_XVEL ;X Velocity target
|
||
.LONG 0 ;Z Velocity target
|
||
|
||
.LONG JAPA_ROW4_RIGHT_CK_GATE12+M_JUMP
|
||
|
||
*Come here to zap us right through Gate 12
|
||
JAPA_GATE12_ZAP
|
||
|
||
LW S_SET_WHAREA, AROW5 ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_FORK_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 800H,122H,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL 29D8DH,-2H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go in
|
||
.WORD 10 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG 1220000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LLW S_WAIT_FOR_ZREL,2B38DH,1
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,ROW5_Z,1 ;Get to the next row
|
||
LW S_DECEL_TO_STOP,4
|
||
LWWWLW S_ACCEL_TO_POINT,-25,122H,0,ROW5_Z,0 ;Pull back so we are lined up
|
||
.LONG S_STOP_SCROLL
|
||
LW S_WAIT_HERE,10
|
||
|
||
.LONG S_MAKE_DECISION ;FUNCTION
|
||
LW JAPA_GATE12_LEFT,0ffffh ;-X, Count
|
||
LW JAPA_GATE12_RIGHT,0ffffh ;+X, Count
|
||
LW 0,0 ;-Y, Count
|
||
LW 0,0 ;+Y, Count
|
||
LW 0,0 ;-Z, Count
|
||
LW 0,0 ;+Z, Count
|
||
|
||
JAPA_GATE12_LEFT
|
||
LWL S_X_ACCEL_LIMIT,-1000H,-CRATE_XVEL ;Move left from gate
|
||
.long JAPA_ROW5_LEFT_CK_GATE14+M_JUMP ;Wait for next gate
|
||
|
||
JAPA_GATE12_RIGHT
|
||
LWL S_X_ACCEL_LIMIT,1000H,CRATE_XVEL ;Move right from gate
|
||
.long JAPA_ROW5_RIGHT_CK_GATE15+M_JUMP ;Wait for next gate
|
||
|
||
JAPA_GATE12_REV_ZAP
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 800H,122H,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL ROW5_Z,-2H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
.LONG S_DOZER_ACCEL ;Pull straight back now
|
||
.WORD 60 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG 1220000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG -CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
LLW S_WAIT_FOR_ZREL,2D200H,1
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,ROW4_Z,1 ;Get to the corner
|
||
LW S_DECEL_TO_STOP,4
|
||
LWWWLW S_ACCEL_TO_POINT,-25,122H,0,ROW4_Z,0 ;Pull back so we are lined up
|
||
.LONG S_STOP_SCROLL
|
||
LW S_WAIT_HERE,10
|
||
|
||
LW S_SET_WHAREA, AROW4 ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,ROW_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_MAKE_DECISION ;FUNCTION
|
||
LW JAPA_GATE12_REV_LEFT,0ffffh ;-X, Count
|
||
LW JAPA_GATE12_REV_RIGHT,0ffffh ;+X, Count
|
||
LW 0,0 ;-Y, Count
|
||
LW 0,0 ;+Y, Count
|
||
LW 0,0 ;-Z, Count
|
||
LW 0,0 ;+Z, Count
|
||
|
||
JAPA_GATE12_REV_LEFT
|
||
LWL S_X_ACCEL_LIMIT,-1000H,-CRATE_XVEL ;Move left from gate
|
||
.long JAPA_ROW4_LEFT_CK_GATE11+M_JUMP ;Wait for next gate
|
||
|
||
JAPA_GATE12_REV_RIGHT
|
||
LWL S_X_ACCEL_LIMIT,1000H,CRATE_XVEL ;Move right from gate
|
||
.long JAPA_ROW4_RIGHT_CK_GATE13+M_JUMP ;Wait for next gate
|
||
|
||
*Come here to zap us right through Gate 13
|
||
JAPA_GATE13_ZAP
|
||
|
||
LW S_SET_WHAREA, AROW5 ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 800H,2A9H,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL 29D8DH,-2H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
JAPA_GATE13_GO
|
||
.LONG S_DOZER_ACCEL ;Round corner and go in
|
||
.WORD 10 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG 2A90000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LLW S_WAIT_FOR_ZREL,2B38DH,1
|
||
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,ROW5_Z-3000H,1 ;Get to the corner
|
||
|
||
.LONG S_JUMP_IF_FALSE,JAPA_GATE13_ZAP_ROUND,GATES_BLOWN+(15*8)
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE16_GO, 5, 60
|
||
|
||
JAPA_GATE13_ZAP_ROUND
|
||
LLW S_WAIT_FOR_ZREL,ROW5_Z-0A90H,1 ;Get to the corner
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go right
|
||
.WORD 60 << 8 + M_Z << 3 + M_Z + M_X + M_ZREL
|
||
.LONG ROW5_Z ;Z Position target
|
||
.LONG -CRATE_XVEL ;X Velocity target
|
||
.LONG 0 ;Z Velocity target
|
||
|
||
.LONG JAPA_ROW5_LEFT_CK_GATE15+M_JUMP
|
||
|
||
JAPA_GATE13_REV_ZAP
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 1000H,2A9H,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL ROW5_Z,-3H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
JAPA_GATE13_REV_GO
|
||
.LONG S_DOZER_ACCEL ;Pull straight back now
|
||
.WORD 60 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG 2A90000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG -CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
LLW S_WAIT_FOR_ZREL,2D200H,1
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,ROW4_Z+0A90H,1 ;Get to the corner
|
||
|
||
LW S_SET_WHAREA, AROW4 ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,ROW_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_JUMP_IF_FALSE,JAPA_GATE13_REV_ROUND,BUSTOUTS+(2*8)
|
||
.LONG S_JUMP_IF_FALSE,JAPA_GATE13_REV_ROUND,GATES_BLOWN+(9*8)
|
||
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_ROW4_LEFT_ZAP, 0, 60
|
||
.long JAPA_GATE10_REV_GO+M_JUMP ;Continue reversing
|
||
|
||
JAPA_GATE13_REV_ROUND
|
||
.LONG S_DOZER_ACCEL ;Round corner and go right
|
||
.WORD 60 << 8 + M_Z << 3 + M_Z + M_X + M_ZREL
|
||
.LONG ROW4_Z ;Z Position target
|
||
.LONG -CRATE_XVEL ;X Velocity target
|
||
.LONG 0 ;Z Velocity target
|
||
|
||
.LONG JAPA_ROW4_LEFT_CK_GATE12+M_JUMP
|
||
|
||
*Come here to zap us right through Gate 14
|
||
JAPA_GATE14_ZAP
|
||
|
||
LW S_SET_WHAREA, AROW6L ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 800H,0C5H,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL 32D9DH,-2H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go in
|
||
.WORD 10 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG 1220000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LLW S_WAIT_FOR_ZREL,3439DH,1
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,ROW6_Z,1 ;Get to the next row
|
||
LW S_DECEL_TO_STOP,4
|
||
LWWWLW S_ACCEL_TO_POINT,-25,0C5H,0,ROW6_Z,0 ;Pull back so we are lined up
|
||
.LONG S_STOP_SCROLL
|
||
LW S_WAIT_HERE,10
|
||
|
||
.LONG S_MAKE_DECISION ;FUNCTION
|
||
LW JAPA_GATE14_LEFT,0ffffh ;-X, Count
|
||
LW JAPA_GATE14_RIGHT,0ffffh ;+X, Count
|
||
LW 0,0 ;-Y, Count
|
||
LW 0,0 ;+Y, Count
|
||
LW 0,0 ;-Z, Count
|
||
LW 0,0 ;+Z, Count
|
||
|
||
JAPA_GATE14_LEFT
|
||
LWL S_X_ACCEL_LIMIT,-1000H,-CRATE_XVEL ;Move left from gate
|
||
.long JAPA_ROW6_LEFT_CK_GATE17+M_JUMP ;Wait for next gate
|
||
|
||
JAPA_GATE14_RIGHT
|
||
LWL S_X_ACCEL_LIMIT,1000H,CRATE_XVEL ;Move right from gate
|
||
.long JAPA_ROW6_RIGHT_CK_GATE18+M_JUMP ;Wait for next gate
|
||
|
||
JAPA_GATE14_REV_ZAP
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 800H,0C5H,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL ROW6_Z,-2H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
.LONG S_DOZER_ACCEL ;Pull straight back now
|
||
.WORD 60 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG 0C50000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG -CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
LLW S_WAIT_FOR_ZREL,36200H,1
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,ROW5_Z,1 ;Get to the corner
|
||
LW S_DECEL_TO_STOP,4
|
||
LWWWLW S_ACCEL_TO_POINT,-25,0C5H,0,ROW5_Z,0 ;Pull back so we are lined up
|
||
.LONG S_STOP_SCROLL
|
||
LW S_WAIT_HERE,10
|
||
|
||
LW S_SET_WHAREA, AROW5 ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,ROW_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_MAKE_DECISION ;FUNCTION
|
||
LW JAPA_GATE14_REV_LEFT,0ffffh ;-X, Count
|
||
LW JAPA_GATE14_REV_RIGHT,0ffffh ;+X, Count
|
||
LW 0,0 ;-Y, Count
|
||
LW 0,0 ;+Y, Count
|
||
LW 0,0 ;-Z, Count
|
||
LW 0,0 ;+Z, Count
|
||
|
||
JAPA_GATE14_REV_LEFT
|
||
LWL S_X_ACCEL_LIMIT,-1000H,-CRATE_XVEL ;Move left from gate
|
||
.long JAPA_ROW5_LEFT_CK_GATE11+M_JUMP ;Wait for next gate
|
||
|
||
JAPA_GATE14_REV_RIGHT
|
||
LWL S_X_ACCEL_LIMIT,1000H,CRATE_XVEL ;Move right from gate
|
||
.long JAPA_ROW5_RIGHT_CK_GATE12+M_JUMP ;Wait for next gate
|
||
|
||
*Come here to zap us right through Gate 15
|
||
JAPA_GATE15_ZAP
|
||
|
||
LW S_SET_WHAREA, AROW6R ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 800H,1E7H,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL 32D9DH,-2H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go in
|
||
.WORD 10 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG 1E70000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LLW S_WAIT_FOR_ZREL,3439DH,1
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,ROW6_Z-0A90H,1 ;Get to the next row
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go right
|
||
.WORD 60 << 8 + M_Z << 3 + M_Z + M_X + M_ZREL
|
||
.LONG ROW6_Z ;Z Position target
|
||
.LONG CRATE_XVEL ;X Velocity target
|
||
.LONG 0 ;Z Velocity target
|
||
|
||
.LONG JAPA_ROW6_RIGHT_CK_GATE19+M_JUMP
|
||
|
||
JAPA_GATE15_REV_ZAP
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 800H,1E7H,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL ROW6_Z,-2H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
.LONG S_DOZER_ACCEL ;Pull straight back now
|
||
.WORD 60 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG 1E70000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG -CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
LLW S_WAIT_FOR_ZREL,36200H,1
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,ROW5_Z,1 ;Get to the corner
|
||
LW S_DECEL_TO_STOP,4
|
||
LWWWLW S_ACCEL_TO_POINT,-25,1E7H,0,ROW5_Z,0 ;Pull back so we are lined up
|
||
.LONG S_STOP_SCROLL
|
||
LW S_WAIT_HERE,10
|
||
|
||
LW S_SET_WHAREA, AROW5 ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,ROW_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_MAKE_DECISION ;FUNCTION
|
||
LW JAPA_GATE15_REV_LEFT,0ffffh ;-X, Count
|
||
LW JAPA_GATE15_REV_RIGHT,0ffffh ;+X, Count
|
||
LW 0,0 ;-Y, Count
|
||
LW 0,0 ;+Y, Count
|
||
LW 0,0 ;-Z, Count
|
||
LW 0,0 ;+Z, Count
|
||
|
||
JAPA_GATE15_REV_LEFT
|
||
LWL S_X_ACCEL_LIMIT,-1000H,-CRATE_XVEL ;Move left from gate
|
||
.long JAPA_ROW5_LEFT_CK_GATE14+M_JUMP ;Wait for next gate
|
||
|
||
JAPA_GATE15_REV_RIGHT
|
||
LWL S_X_ACCEL_LIMIT,1000H,CRATE_XVEL ;Move right from gate
|
||
.long JAPA_ROW5_RIGHT_CK_GATE16+M_JUMP ;Wait for next gate
|
||
|
||
*Come here to zap us right through Gate 16
|
||
JAPA_GATE16_ZAP
|
||
|
||
LW S_SET_WHAREA, AROW6R ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 800H,2A9H,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL 32D9DH,-2H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
JAPA_GATE16_GO
|
||
.LONG S_DOZER_ACCEL ;Round corner and go in
|
||
.WORD 10 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG 2A90000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LLW S_WAIT_FOR_ZREL,3439DH,1
|
||
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,ROW6_Z-3000H,1 ;Get to the corner
|
||
.LONG S_JUMP_IF_FALSE,JAPA_GATE16_ZAP_ROUND,GATES_BLOWN+(18*8)
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_GATE19_GO, 5, 60
|
||
|
||
JAPA_GATE16_ZAP_ROUND
|
||
LLW S_WAIT_FOR_ZREL,ROW6_Z-0A90H,1 ;Get to the corner
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go right
|
||
.WORD 60 << 8 + M_Z << 3 + M_Z + M_X + M_ZREL
|
||
.LONG ROW6_Z ;Z Position target
|
||
.LONG -CRATE_XVEL ;X Velocity target
|
||
.LONG 0 ;Z Velocity target
|
||
|
||
.LONG JAPA_ROW6_LEFT_CK_GATE15+M_JUMP
|
||
|
||
JAPA_GATE16_REV_ZAP
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 1000H,2A9H,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL ROW6_Z,-3H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
JAPA_GATE16_REV_GO
|
||
.LONG S_DOZER_ACCEL ;Pull straight back now
|
||
.WORD 60 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG 2A90000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG -CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
LLW S_WAIT_FOR_ZREL,36200H,1
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,ROW5_Z+0A90H,1 ;Get to the corner
|
||
|
||
LW S_SET_WHAREA, AROW5 ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,ROW_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_JUMP_IF_FALSE,JAPA_GATE16_REV_ROUND,GATES_BLOWN+(12*8)
|
||
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_ROW5_LEFT_ZAP, 0, 60
|
||
.long JAPA_GATE13_REV_GO+M_JUMP ;Continue reversing
|
||
|
||
JAPA_GATE16_REV_ROUND
|
||
.LONG S_DOZER_ACCEL ;Round corner and go right
|
||
.WORD 60 << 8 + M_Z << 3 + M_Z + M_X + M_ZREL
|
||
.LONG ROW5_Z ;Z Position target
|
||
.LONG -CRATE_XVEL ;X Velocity target
|
||
.LONG 0 ;Z Velocity target
|
||
|
||
.LONG JAPA_ROW5_LEFT_CK_GATE15+M_JUMP
|
||
|
||
*Come here to zap us right through Gate 17
|
||
JAPA_GATE17_ZAP
|
||
|
||
.LONG S_CREATE_PROCR
|
||
.word PID_IND
|
||
.long 0,0,0,04692FH,FLOAT_ZFAR
|
||
.word 0
|
||
|
||
LLW S_DISPATCH_HERE,DUMMY_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 800H,-3H,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL 3A835H,-2H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go in
|
||
.WORD 10 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG -30000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LLW S_WAIT_FOR_ZREL,3C800H,1
|
||
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,40000H,1 ;Get to the end
|
||
|
||
.LONG S_JUMP_IF_FALSE,JAPA_BUSTOUT4_INTACT,BUSTOUTS+(3*8)
|
||
|
||
LLW S_SET_WORD, SCROLLKILL, 1 ;STOP FLOATING ZFAR
|
||
|
||
JAPA_BUSTOUT4_PASS
|
||
|
||
LW S_SET_WHAREA, AROW7 ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
LLW S_WAIT_FOR_ZREL,ROW7_Z-0A90H,1 ;Get to the corner
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go right
|
||
.WORD 60 << 8 + M_Z << 3 + M_Z + M_X + M_ZREL
|
||
.LONG ROW7_Z ;Z Position target
|
||
.LONG CRATE_XVEL ;X Velocity target
|
||
.LONG 0 ;Z Velocity target
|
||
|
||
.LONG JAPA_ROW7_RIGHT_CK_EXIT+M_JUMP
|
||
|
||
JAPA_BUSTOUT4_INTACT
|
||
LW S_DECEL_TO_STOP,5
|
||
|
||
.LONG S_JUMP_IF_TRUE,JAPA_BUSTOUT4_LAST_CHANCE,BUSTOUTS+(3*8)
|
||
|
||
LLW S_DISPATCH_HERE,DEADEND_DISPATCH+M_WAIT,0
|
||
|
||
LWWWLW S_ACCEL_TO_POINT,-60,-3H,0,3F000H,0
|
||
|
||
LLW S_DISPATCH_HERE,DUMMY_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,ROW6_Z+0A90H,1 ;Get to the corner
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go left
|
||
.WORD 60 << 8 + M_Z << 3 + M_Z + M_X + M_ZREL
|
||
.LONG ROW6_Z ;Z Position target
|
||
.LONG CRATE_XVEL ;X Velocity target
|
||
.LONG 0 ;Z Velocity target
|
||
|
||
LLW S_SET_WORD, SCROLLKILL, 1 ;STOP FLOATING ZFAR
|
||
|
||
LW S_SET_WHAREA, AROW6L ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,ROW_DISPATCH+M_WAIT,0
|
||
|
||
.LONG JAPA_ROW6_RIGHT_CK_GATE14+M_JUMP ;Jump to wait for left side of backrow
|
||
|
||
JAPA_BUSTOUT4_LAST_CHANCE
|
||
|
||
LLW S_SET_WORD, SCROLLKILL, 1 ;STOP FLOATING ZFAR
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go in
|
||
.WORD 60 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG -30000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
.LONG JAPA_BUSTOUT4_PASS+M_JUMP ;Jump to wait for left side of backrow
|
||
|
||
*Come here to zap us right through Gate 18
|
||
JAPA_GATE18_ZAP
|
||
|
||
.LONG S_CREATE_PROCR
|
||
.word PID_IND
|
||
.long 0,0,0,0478B5H,FLOAT_ZFAR
|
||
.word 0
|
||
|
||
LLW S_DISPATCH_HERE,DUMMY_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 800H,120H,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL 3A835H,-2H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go in
|
||
.WORD 10 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG 1200000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LLW S_WAIT_FOR_ZREL,3C800H,1
|
||
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,40000H,1 ;Get to the end
|
||
|
||
LW S_DECEL_TO_STOP,5
|
||
|
||
LLW S_DISPATCH_HERE,DEADEND_DISPATCH+M_WAIT,0
|
||
|
||
LWWWLW S_ACCEL_TO_POINT,-60,120H,0,3F000H,0
|
||
|
||
LLW S_DISPATCH_HERE,DUMMY_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,ROW6_Z+0A90H,1 ;Get to the corner
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go left
|
||
.WORD 60 << 8 + M_Z << 3 + M_Z + M_X + M_ZREL
|
||
.LONG ROW6_Z ;Z Position target
|
||
.LONG -CRATE_XVEL ;X Velocity target
|
||
.LONG 0 ;Z Velocity target
|
||
|
||
LLW S_SET_WORD, SCROLLKILL, 1 ;STOP FLOATING ZFAR
|
||
|
||
LW S_SET_WHAREA, AROW6L ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,ROW_DISPATCH+M_WAIT,0
|
||
|
||
.LONG JAPA_ROW6_LEFT_CK_GATE14+M_JUMP ;Jump to wait for left side of backrow
|
||
|
||
*Come here to zap us right through Gate 19
|
||
JAPA_GATE19_ZAP
|
||
|
||
LW S_SET_WHAREA, AROW7 ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_FORK_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 800H,2A9H,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL 3A835H,-2H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
JAPA_GATE19_GO
|
||
.LONG S_DOZER_ACCEL ;Round corner and go in
|
||
.WORD 10 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG 2A90000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LLW S_WAIT_FOR_ZREL,3C800H,1
|
||
|
||
.LONG S_SET_LONG, YSCROLL, 020000H ;Set to jump gate opening
|
||
.LONG S_SET_LONG, YSACCEL, -01000H
|
||
LW S_WAIT_HERE, 66
|
||
.LONG S_CLR_YMOTION
|
||
|
||
LLW S_WAIT_FOR_ZREL,ROW7_Z-0A90H,1 ;Get to the corner
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go right
|
||
.WORD 60 << 8 + M_Z << 3 + M_Z + M_X + M_ZREL
|
||
.LONG ROW7_Z ;Z Position target
|
||
.LONG -CRATE_XVEL ;X Velocity target
|
||
.LONG 0 ;Z Velocity target
|
||
|
||
.LONG JAPA_ROW7_LEFT_CK_EXIT+M_JUMP
|
||
|
||
JAPA_BUSTOUT1_ZAP
|
||
|
||
LW S_SET_WHAREA, AROW3 ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 800H,0F9H,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL 153A0H,-2H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
JAPA_BUSTOUT1_GO
|
||
.LONG S_DOZER_ACCEL ;Round corner and go in
|
||
.WORD 10 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG 0F90000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
.LONG JAPA_BUSTOUT1_PASS+M_JUMP
|
||
|
||
JAPA_BUSTOUT1_REV_FROM_STOP
|
||
LWWWLW S_ACCEL_TO_POINT,-30,0F9H,0,175B0H,0
|
||
.LONG JAPA_BUSTOUT1_REV_GO+M_JUMP
|
||
JAPA_BUSTOUT1_REV_ZAP
|
||
.LONG S_ACCEL_LIMIT_TO_POINT
|
||
.WORD 1000H,0F9H,CRATE_XVEL >> 16
|
||
.WORD 1000H,0,1H
|
||
LWL 175B0H,-3H,CRATE_ZVEL
|
||
.WORD M_Z
|
||
|
||
JAPA_BUSTOUT1_REV_GO
|
||
.LONG S_DOZER_ACCEL ;Round corner and go backwards
|
||
.WORD 60 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG 0F90000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG -CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
LLW S_DISPATCH_HERE,AISLE_DISPATCH+M_WAIT,0
|
||
|
||
LLW S_WAIT_FOR_ZREL,16800H,1 ;Get to Row 2 pt. 2
|
||
|
||
LW S_SET_WHAREA, AROW2B ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,ROW_DISPATCH+M_WAIT,0
|
||
|
||
LLWW S_MAKE_SOLO_BUTTON, JAPA_ROW2_2_ZAP, 1, 60
|
||
|
||
.LONG JAPA_GATE3_REV_GO+M_JUMP
|
||
|
||
JAPA_ROW2_2_ZAP
|
||
LWWWLW S_ACCEL_TO_POINT,-120,100H,0,ROW2_Z2,0 ;Get on line and go
|
||
.long JAPA_BUSTOUT1_INTACT+M_JUMP ;Wait for next gate
|
||
|
||
JAPA_ROW3_LEFT_ZAP
|
||
.LONG S_SET_LONG, YSCROLL, 0H ;Clear for safety
|
||
LWWWLW S_ACCEL_TO_POINT,-80,2A9H,0,ROW3_Z,0 ;Get on line and go
|
||
.long JAPA_GATE10_REV_ROUND+M_JUMP ;Wait for next gate
|
||
|
||
JAPA_ROW3_GATE9_LEFT_ZAP
|
||
.LONG S_SET_LONG, YSCROLL, 0H ;Clear for safety
|
||
LWWWLW S_ACCEL_TO_POINT,-80,0E9H,0,ROW3_Z,0 ;Get on line and go
|
||
.LONG S_DOZER_ACCEL ;Round corner and go right
|
||
.WORD 60 << 8 + M_Z << 3 + M_Z + M_X + M_ZREL
|
||
.LONG ROW3_Z ;Z Position target
|
||
.LONG -CRATE_XVEL ;X Velocity target
|
||
.LONG 0 ;Z Velocity target
|
||
.long JAPA_ROW3_LEFT_CK_GATE5+M_JUMP ;Jump to next gate check
|
||
|
||
JAPA_ROW3_GATE9_RIGHT_ZAP
|
||
.LONG S_SET_LONG, YSCROLL, 0H ;Clear for safety
|
||
LWWWLW S_ACCEL_TO_POINT,-80,0E9H,0,ROW3_Z,0 ;Get on line and go
|
||
.LONG S_DOZER_ACCEL ;Round corner and go right
|
||
.WORD 60 << 8 + M_Z << 3 + M_Z + M_X + M_ZREL
|
||
.LONG ROW3_Z ;Z Position target
|
||
.LONG CRATE_XVEL ;X Velocity target
|
||
.LONG 0 ;Z Velocity target
|
||
.long JAPA_ROW3_RIGHT_CK_GATE6+M_JUMP ;Jump to next gate check
|
||
|
||
JAPA_ROW4_RIGHT_ZAP
|
||
LWWWLW S_ACCEL_TO_POINT,-80,-8EH,0,ROW4_Z,0 ;Get on line and go
|
||
.long JAPA_GATE11_REV_ROUND+M_JUMP ;Wait for next gate
|
||
|
||
JAPA_ROW4_LEFT_ZAP
|
||
LWWWLW S_ACCEL_TO_POINT,-80,2A9H,0,ROW4_Z,0 ;Get on line and go
|
||
.long JAPA_GATE13_REV_ROUND+M_JUMP ;Wait for next gate
|
||
|
||
JAPA_ROW5_LEFT_ZAP
|
||
LWWWLW S_ACCEL_TO_POINT,-80,2A9H,0,ROW5_Z,0 ;Get on line and go
|
||
.long JAPA_GATE16_REV_ROUND+M_JUMP ;Wait for next gate
|
||
|
||
*Come here to zap us to Forklift alley
|
||
JAPA_WHIT_ZAP
|
||
LWWWLW S_ACCEL_TO_POINT,-120,2D0H,0,ROW2_Z2,0
|
||
|
||
.LONG S_DOZER_ACCEL ;Continue towards the alley
|
||
.WORD 60 << 8 + M_Z << 3 + M_Z + M_X + M_ZREL
|
||
.LONG ROW2_Z2 ;Z Position target
|
||
.LONG CRATE_XVEL ;X Velocity target
|
||
.LONG 0 ;Z Velocity target
|
||
|
||
.LONG S_CHANGE_ZFAR,18000H ;Make it so we can see way down
|
||
|
||
LLW S_DISPATCH_HERE,ALLEY_DISPATCH+M_WAIT,0
|
||
|
||
LLLW S_WAIT_FOR_COORD,XBASE,3D00000H,1 ;Scroll past opening gate
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go in
|
||
.WORD 60 << 8 + M_X << 3 + M_Z + M_X + M_ZREL
|
||
.LONG 3EE0000H ;X Position target
|
||
.LONG 0 ;X Velocity target
|
||
.LONG CRATE_ZVEL << ZFRAC ;Z Velocity target
|
||
|
||
.LONG S_CREATE_PROCR ;Start the damage color stuff
|
||
.WORD PID_FORKLIFT
|
||
.LONG 4A71CH,198000H,3F20000H,0,PROC_BRAD_FORKLIFT ;Take him there
|
||
.WORD 0
|
||
|
||
LLW S_WAIT_FOR_ZREL,42600H,1 ;Get to the corner
|
||
|
||
LW S_DECEL_TO_STOP,4
|
||
|
||
LLW S_SET_WORD, WHITFORD_FLAG, 1
|
||
|
||
LW S_WAIT_HERE,80
|
||
|
||
; LLW S_WAIT_FOR_ZREL,ROW7_Z-0A90H,1 ;Get to the corner
|
||
|
||
.LONG S_DOZER_ACCEL ;Round corner and go right
|
||
.WORD 60 << 8 + M_Z << 3 + M_Z + M_X + M_ZREL
|
||
.LONG ROW7_Z ;Z Position target
|
||
.LONG -CRATE_XVEL ;X Velocity target
|
||
.LONG 0 ;Z Velocity target
|
||
|
||
.LONG S_CHANGE_ZFAR,10F00H ;Set the correct ZFAR
|
||
|
||
LW S_SET_WHAREA, AROW7 ;WAREHOUSE AREA
|
||
|
||
LLW S_DISPATCH_HERE,ROW_DISPATCH+M_WAIT,0
|
||
|
||
.LONG JAPA_ROW7_LEFT_CK_EXIT+M_JUMP
|
||
|
||
*
|
||
* Special entry to just setup at the exit
|
||
*
|
||
JAP_BOXB_SCROLL
|
||
.LONG S_CLR_GATE_FLAGS ;Clear our gate flags
|
||
|
||
.LONG S_SET_LONG, WXBUFFER, 0380000H ;Open univ block buffer
|
||
.LONG S_SET_LONG, WYBUFFER, 0540000H
|
||
|
||
.LONG S_CHANGE_ZFAR,10F00H ;Set the correct ZFAR
|
||
|
||
.LONG S_LOCKOUT_PORTALS
|
||
|
||
.LONG JAPA_PORTAL+M_JUMP
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* Associated warehouse processes *
|
||
* *
|
||
**************************************************************************
|
||
|
||
**************************************************************************
|
||
* *
|
||
* PROC_FACTORY_XFADE *
|
||
* *
|
||
* Process to start the factory XFADE sound. *
|
||
* *
|
||
**************************************************************************
|
||
PROC_FACTORY_XFADE
|
||
SLEEP 22
|
||
; SOUND1 SND_XFADE_HOLD
|
||
SOUND1 SND_FACTORY
|
||
DIE
|
||
|
||
**************************************************************************
|
||
* *
|
||
* PROC_NONBOY_CRATE_RUN *
|
||
* *
|
||
* Process to create a running NON-BOY. Uses the variable *
|
||
* ENEMY_ZBASE to add to the given ZPOSs. *
|
||
* *
|
||
* A8 = Universe Y *
|
||
* A9 = [FLAGS,X offscreen screen offset] *
|
||
* A10 = Closest possible Z (relative to ENEMY_ZBASE) *
|
||
* A11 = Farthest possible Z (relative to ENEMY_ZBASE) *
|
||
* *
|
||
* Note: See GXNONBOY.H for explanation of FLAGS *
|
||
* *
|
||
**************************************************************************
|
||
PROC_NONBOY_CRATE_RUN
|
||
MOVE @ENEMY_ZBASE,A1,L
|
||
MOVE @ZREL_OFF,A14,L
|
||
SRA ZFRAC,A14
|
||
ADD A14,A1
|
||
ADD A1,A10 ;Offset close Z
|
||
ADD A1,A11 ;Offset far Z
|
||
MOVE @ENEMY_YBASE,A1,L
|
||
ADD A1,A8 ;Offset Y
|
||
JAUC CREATE_SIDERUN_NONBOY0
|
||
|
||
PROC_NONBOY_CRATE_RUN2
|
||
MOVE @WHAREA,A1,W
|
||
; DEC A1
|
||
MOVE A1,A14
|
||
SLL 5,A1
|
||
SLL 6,A14
|
||
ADD A1,A14
|
||
ADDI ROW_PARMS_TABLE,A14
|
||
|
||
MMFM A14,A1,A2,A4 ;A4 = [RIGHT UNIVERSE X >> 16,
|
||
; LEFT UNIVERSE X >> 16]
|
||
;A2 = UNIVERSE Z CLOSEST
|
||
;A1 = UNIVERSE Z FARTHEST
|
||
MOVE @ZREL_OFF,A14,L
|
||
SRA ZFRAC,A14
|
||
ADD A14,A2
|
||
ADD A14,A1
|
||
ADD A2,A10 ;Offset close Z
|
||
ADD A1,A11 ;Offset far Z
|
||
|
||
MOVE @ZBASE,A5,L
|
||
MOVE @ZFAR,A14,L
|
||
ADD A14,A5
|
||
CMP A5,A10
|
||
; JAGT SUCIDE
|
||
JRLE PNCR2_CHECK_FAR
|
||
JAUC SUCIDE
|
||
PNCR2_CHECK_FAR
|
||
CMP A5,A11
|
||
JRLT PNCR2_OFFY
|
||
MOVE A5,A11
|
||
PNCR2_OFFY
|
||
|
||
MOVE @ENEMY_YBASE,A14,L
|
||
ADD A14,A8 ;Offset Y
|
||
|
||
MOVE @XBASE,A5,L
|
||
MOVE A4,A3
|
||
ADDI 049H,A3
|
||
SLL 16,A3 ;LEFT UNIVERSE X
|
||
|
||
CMP A3,A5
|
||
JRGT PNCR2_CHECK_RIGHT
|
||
ORI M_NON_RIGHT << 16,A9
|
||
JRUC PNCR2_GO
|
||
PNCR2_CHECK_RIGHT
|
||
SRA 16,A4
|
||
SUBI 049H,A4
|
||
SLL 16,A4 ;RIGHT UNIVERSE X
|
||
|
||
CMP A4,A5
|
||
JRLT PNCR2_GO
|
||
ORI M_NON_LEFT << 16,A9
|
||
PNCR2_GO
|
||
JAUC CREATE_SIDERUN_NONBOY0
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* PROC_NINJA_CRATE_JUMPIN *
|
||
* *
|
||
* Process to create a jump in Ninja in the crates. *
|
||
* Uses the global crate info *
|
||
* *
|
||
**************************************************************************
|
||
PROC_NINJA_CRATE_JUMPIN
|
||
MOVE @WHAREA,A1,W
|
||
; DEC A1
|
||
MOVE A1,A14
|
||
SLL 5,A1
|
||
SLL 6,A14
|
||
ADD A1,A14
|
||
ADDI ROW_PARMS_TABLE,A14
|
||
|
||
MMFM A14,A1,A2,A9 ;A4 = [RIGHT UNIVERSE X >> 16,
|
||
; LEFT UNIVERSE X >> 16]
|
||
;A2 = UNIVERSE Z CLOSEST
|
||
;A1 = UNIVERSE Z FARTHEST
|
||
|
||
SRA 8,A2
|
||
MOVE A2,A10
|
||
SLL 8,A1
|
||
MOVY A1,A10
|
||
|
||
MOVE @ENEMY_YBASE,A11,L
|
||
SUBI [7,0],A11
|
||
|
||
JAUC PROC_NINJA_JUMPIN
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* PROC_FORK_ROW *
|
||
* *
|
||
* Create a fork lift in a given row. *
|
||
* *
|
||
* A11 = Row parameter table entry *
|
||
* *
|
||
**************************************************************************
|
||
PROC_FORK_ROW
|
||
MOVE A11,A14
|
||
JRUC FORK_ROW_LOAD
|
||
|
||
**************************************************************************
|
||
* *
|
||
* PROC_SIDE_FORKLIFT_CRATE *
|
||
* *
|
||
* Process to create a side roving forklift. *
|
||
* Uses global crate info. *
|
||
* *
|
||
**************************************************************************
|
||
PROC_SIDE_FORKLIFT_CRATE
|
||
MOVE @WHAREA,A1,W
|
||
MOVE A1,A14
|
||
SLL 5,A1
|
||
SLL 6,A14
|
||
ADD A1,A14
|
||
ADDI ROW_PARMS_TABLE,A14
|
||
|
||
FORK_ROW_LOAD
|
||
MMFM A14,A1,A2,A9 ;A4 = [RIGHT UNIVERSE X >> 16,
|
||
; LEFT UNIVERSE X >> 16]
|
||
;A2 = UNIVERSE Z CLOSEST
|
||
;A1 = UNIVERSE Z FARTHEST
|
||
MOVE A1,A11
|
||
|
||
MOVE @ENEMY_YBASE,A10,L
|
||
; SUBI [7,0],A11
|
||
|
||
JAUC PROC_SIDE_FORKLIFT
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* PROC_FRONT_FORK_ALLEY *
|
||
* *
|
||
* Create a front fork lift that comes down fork lift *
|
||
* alley. *
|
||
* *
|
||
**************************************************************************
|
||
PROC_FRONT_FORK_ALLEY
|
||
MOVE @ZBASE,A0,L
|
||
MOVE @ZREL_OFF,A14,L
|
||
SRA ZFRAC,A14
|
||
SUB A14,A0
|
||
CMPI 3B29FH,A0
|
||
JAGT SUCIDE ;BR = No more fork lifts
|
||
|
||
; MOVE @XBASE,A9,L
|
||
MOVI 3EDFDB0H,A9
|
||
MOVK 25,A0
|
||
CALLA SRAND
|
||
SLL 16,A0
|
||
ADD A0,A9
|
||
|
||
MOVE @ENEMY_YBASE,A10,L
|
||
|
||
; MOVE @ZBASE,A11,L
|
||
; MOVE @ZFAR,A0,L
|
||
; ADD A0,A11
|
||
|
||
MOVI 4A000H,A11
|
||
|
||
JAUC PROC_FRONT_FORKLIFT
|
||
|
||
**************************************************************************
|
||
* *
|
||
* Warehouse damage handlers *
|
||
* *
|
||
**************************************************************************
|
||
|
||
O_BOOTY .EQU OU_ODATA ;UHL Routine to call to give up loot
|
||
OCRATE_BUSTOUT .EQU OU_ODATA+20H ;UHW If 1 then this is a bustout crate
|
||
|
||
**************************************************************************
|
||
* *
|
||
* WCRATE_GUNVECT *
|
||
* *
|
||
* Gun vector for the Warehouse crate that holds the secret *
|
||
* to finding Brad Whitford. *
|
||
* *
|
||
* A2 = Ptr to player shooting *
|
||
* A8 = Ptr to crate *
|
||
* *
|
||
**************************************************************************
|
||
WCRATE_GUNVECT
|
||
CLRM *A8(OCRATE_BUSTOUT),W ;This is not a bust
|
||
MOVIM WHITFORD_SIGN,*A8(O_BOOTY),L ;Dis da loot
|
||
JRUC CRATE_GUN_G
|
||
|
||
WCRATE_CVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,WCRATE_EXPLOSION_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* WCRATE_EXPLOSION_CVECT *
|
||
* *
|
||
* Collision service vector for the Warehouse crate that *
|
||
* really holds the key to finding Brad Whitford. *
|
||
* *
|
||
* A0 = Ptr to explosion object *
|
||
* A8 = Ptr to Crate *
|
||
* *
|
||
**************************************************************************
|
||
WCRATE_EXPLOSION_CVECT
|
||
CLRM *A8(OCRATE_BUSTOUT),W ;This is not a bust
|
||
MOVIM WHITFORD_SIGN,*A8(O_BOOTY),L ;Dis da loot
|
||
JRUC CRATE_EXP_CVECT_G
|
||
|
||
**************************************************************************
|
||
* *
|
||
* ACRATE_GUNVECT *
|
||
* *
|
||
* Gun vector for the Warehouse crate that holds the ARK. *
|
||
* *
|
||
* A2 = Ptr to player shooting *
|
||
* A8 = Ptr to crate *
|
||
* *
|
||
**************************************************************************
|
||
ACRATE_GUNVECT
|
||
CLRM *A8(OCRATE_BUSTOUT),W ;This is not a bust
|
||
MOVIM ARK_REVEAL,*A8(O_BOOTY),L ;Dis da loot
|
||
JRUC CRATE_GUN_G
|
||
|
||
ACRATE_CVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,ACRATE_EXPLOSION_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* ACRATE_EXPLOSION_CVECT *
|
||
* *
|
||
* Collision service vector for the Warehouse crate that *
|
||
* holds the ARK. *
|
||
* *
|
||
* A0 = Ptr to explosion object *
|
||
* A8 = Ptr to Crate *
|
||
* *
|
||
**************************************************************************
|
||
ACRATE_EXPLOSION_CVECT
|
||
CLRM *A8(OCRATE_BUSTOUT),W ;This is not a bust
|
||
MOVIM ARK_REVEAL,*A8(O_BOOTY),L ;Dis da loot
|
||
JRUC CRATE_EXP_CVECT_G
|
||
|
||
*
|
||
* Table of Bust throughs
|
||
* LWL ZVAL(round16), # of crates, Function to call
|
||
*
|
||
TAB_BUSTOUTS
|
||
LWL 1ABA0H,6,BUSTOUT1_SUPRISE ;Bust through #1
|
||
LWL 25930H,6,0 ;Bust through #2
|
||
LWL 29FB0H,6,BUSTOUT3_SUPRISE ;Bust through #3
|
||
LWL 46920H,6,0 ;Bust through #4
|
||
BUSTOUT5_TAB_ENTRY
|
||
LWL 4D080H,9,BUSTOUT5_SUPRISE ;Bust through #5
|
||
.LONG 0
|
||
|
||
**************************************************************************
|
||
* *
|
||
* BUSTOUT_GUNVECT *
|
||
* *
|
||
* Gun vector for the Warehouse crate that is a secret bustout. *
|
||
* *
|
||
* A2 = Ptr to player shooting *
|
||
* A8 = Ptr to crate *
|
||
* *
|
||
**************************************************************************
|
||
BUSTOUT_GUNVECT
|
||
MOVKM 1,*A8(OCRATE_BUSTOUT),W ;This is a bustout crate
|
||
CLRM *A8(O_BOOTY),L ;Don't give it up
|
||
JRUC CRATE_GUN_G
|
||
|
||
BUSTOUT_CVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,BUSTOUT_EXPLOSION_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* BUSTOUT_EXPLOSION_CVECT *
|
||
* *
|
||
* Collision service vector for the Warehouse crate that is *
|
||
* really a secret bustout crate. *
|
||
* *
|
||
* A0 = Ptr to explosion object *
|
||
* A8 = Ptr to Crate *
|
||
* *
|
||
**************************************************************************
|
||
BUSTOUT_EXPLOSION_CVECT
|
||
MOVKM 1,*A8(OCRATE_BUSTOUT),W ;This is a bustout crate
|
||
CLRM *A8(O_BOOTY),L ;Don't give it up
|
||
JRUC CRATE_EXP_CVECT_G
|
||
|
||
**************************************************************************
|
||
* *
|
||
* ENT_CRATE_GUNVECT *
|
||
* *
|
||
* Gun vector for the entrance crates *
|
||
* *
|
||
* A2 = Ptr to player shooting *
|
||
* A8 = Ptr to crate *
|
||
* *
|
||
**************************************************************************
|
||
ENT_CRATE_GUNVECT
|
||
CLRM *A8(OCRATE_BUSTOUT),W ;This is not a bustout crate
|
||
MOVIM ENTRANCE_CRATES,*A8(O_BOOTY),L ;Dis da loot
|
||
JRUC CRATE_GUN_G
|
||
|
||
ENT_CRATE_CVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,ENT_CRATE_EXPLOSION_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* ENT_CRATE_EXPLOSION_CVECT *
|
||
* *
|
||
* Collision service vector for the entrance crates. *
|
||
* *
|
||
* A0 = Ptr to explosion object *
|
||
* A8 = Ptr to Crate *
|
||
* *
|
||
**************************************************************************
|
||
ENT_CRATE_EXPLOSION_CVECT
|
||
CLRM *A8(OCRATE_BUSTOUT),W ;This is not a bustout crate
|
||
MOVIM ENTRANCE_CRATES,*A8(O_BOOTY),L ;Dis da loot
|
||
JRUC CRATE_EXP_CVECT_G
|
||
|
||
**************************************************************************
|
||
* *
|
||
* SIDE_CRATE_GUNVECT *
|
||
* *
|
||
* Gun vector for the Warehouse crate that has a side perspective. *
|
||
* *
|
||
* A2 = Ptr to player shooting *
|
||
* A8 = Ptr to crate *
|
||
* *
|
||
**************************************************************************
|
||
SIDE_CRATE_GUNVECT
|
||
CLRM *A8(OCRATE_BUSTOUT),W ;This is not a bustout crate
|
||
CLRM *A8(O_BOOTY),L ;Don't give it up
|
||
JRUC CRATE_GUN_G
|
||
|
||
SIDE_CRATE_CVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,SIDE_CRATE_EXPLOSION_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* SIDE_CRATE_EXPLOSION_CVECT *
|
||
* *
|
||
* Collision service vector for the Warehouse crate that has *
|
||
* a side perspective. *
|
||
* *
|
||
* A0 = Ptr to explosion object *
|
||
* A8 = Ptr to Crate *
|
||
* *
|
||
**************************************************************************
|
||
SIDE_CRATE_EXPLOSION_CVECT
|
||
CLRM *A8(OCRATE_BUSTOUT),W ;This is not a bustout crate
|
||
CLRM *A8(O_BOOTY),L ;Don't give it up
|
||
JRUC CRATE_EXP_CVECT_G
|
||
|
||
**************************************************************************
|
||
* *
|
||
* CRATE_GUNVECT *
|
||
* *
|
||
* Gun vector for the Warehouse crate. *
|
||
* *
|
||
* A2 = Ptr to player shooting *
|
||
* A8 = Ptr to chest *
|
||
* *
|
||
**************************************************************************
|
||
CRATE_GUNVECT
|
||
CLRM *A8(OCRATE_BUSTOUT),W ;This is not a bustout crate
|
||
MOVIM CRATE_POWERUP,*A8(O_BOOTY),L ;Dis da loot
|
||
|
||
CRATE_GUN_G
|
||
MOVI 500,A5 ;Points for killing this
|
||
MOVK M_FLASHOBJ,A7 ;Flash if we hit it
|
||
CLR A9 ;Offset for printed score
|
||
CALLA UNIV_DAMAGE_HANDLER ;Call the handler
|
||
JRC CRATE_EXPLODE ;BR = Time to destroy
|
||
|
||
SOUNDZ SND_CHEST_HIT ;Give a little sound to ack
|
||
|
||
RETS
|
||
|
||
*
|
||
*Crate
|
||
*
|
||
WARE_CRATE_CVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,CRATE_EXPLOSION_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* CRATE_EXPLOSION_CVECT *
|
||
* *
|
||
* Collision service vector for the Warehouse crate. *
|
||
* *
|
||
* A0 = Ptr to explosion object *
|
||
* A8 = Ptr to Crate *
|
||
* *
|
||
**************************************************************************
|
||
CRATE_EXPLOSION_CVECT
|
||
CLRM *A8(OCRATE_BUSTOUT),W ;This is not a bustout crate
|
||
MOVIM CRATE_POWERUP,*A8(O_BOOTY),L ;Dis da loot
|
||
CRATE_EXP_CVECT_G
|
||
CALLA UNIV_COLL_CHECK ;See if this was a valid collision
|
||
JRNZ CRATE_DONE ;BR = No
|
||
|
||
MOVE *A0(OID),A0,W
|
||
CALLA POID_TO_PDATA ;Get player's data area
|
||
|
||
MOVI 500,A5 ;Points for killing this thing
|
||
MOVK M_LASTFRM|M_FLASHOBJ,A7 ;Last frame and flash
|
||
CLR A9 ;Offset for printed score
|
||
CALLA UNIV_DAMAGE_HANDLER ;Do the patented damage shit
|
||
JRNC CRATE_DEAD ;BR = Damage already done
|
||
*
|
||
*Here we explode the Crate
|
||
*A8 = Ptr to Crate
|
||
*
|
||
CRATE_EXPLODE
|
||
SOUNDZ SND_CHEST_EXPLODE
|
||
|
||
MOVIM DEAD_GUNVECT,*A8(OGUNVECT),L
|
||
MOVIM DUMCOLL,*A8(OCVECT),L
|
||
|
||
CALLR CRATE_FRAGS
|
||
|
||
MOVE *A8(O_BOOTY),A14,L ;Is there a loot func?
|
||
JRZ CRATE_CK_BUSTER ;BR = No
|
||
|
||
CALL A14 ;Call loot func
|
||
|
||
CRATE_CK_BUSTER
|
||
MOVE *A8(OCRATE_BUSTOUT),A14,W ;Is this a bustout crate?
|
||
JRZ CRATE_DONE ;BR = No
|
||
|
||
MOVE *A8(OZVAL),A3,L ;We can tell by the Z
|
||
MOVE @ZREL_OFF,A14,L
|
||
SRA ZFRAC,A14
|
||
SUB A14,A3 ;Convert to this world
|
||
SRL 4,A3
|
||
SLL 4,A3
|
||
|
||
MOVI TAB_BUSTOUTS-48,A4 ;Get the table of Z's to match
|
||
CLR A6 ;This will be an index for later
|
||
DEC A6
|
||
|
||
CRATE_BUSTOUT_SEARCH
|
||
INC A6 ;Index next
|
||
ADDI 48,A4 ;And get next entry
|
||
|
||
MOVE *A4+,A14,L ;Get Z from table
|
||
JRZ CRATE_DONE ;BR = No matches found
|
||
CMP A14,A3 ;Is this our guy?
|
||
JRNE CRATE_BUSTOUT_SEARCH ;BR = No
|
||
|
||
* We've found the bustout group that this crate belongs to
|
||
|
||
SLL 3,A6
|
||
MOVE A6,A14
|
||
ADDI BUSTOUT_COUNTS,A14
|
||
MOVB *A14,A1 ;Get the # blown from this group
|
||
INC A1 ;And add 1
|
||
MOVB A1,*A14 ;Save again for later
|
||
MOVE *A4+,A14,W ;How many does it take to blow
|
||
CMP A14,A1 ;Do we have enough to blow?
|
||
JRLO CRATE_DONE ;BR = No
|
||
|
||
MOVKM 1,@SCROLLKILL,W ;Show us the world beyond
|
||
|
||
CALLA GET_SUPP ;Get our supplemental
|
||
JRZ CRATE_DONE
|
||
MOVE *A8(OID),A5,W
|
||
MOVE A0,A8 ;Save for a rainy day
|
||
|
||
*
|
||
* Entrypoint to blow crates manually.
|
||
* A4 = Ptr to special func of bustout table entry
|
||
* A5 = OID to search for
|
||
* A6 = (Bustout # - 1) << 3
|
||
* A8 = Ptr to supplemental list
|
||
*
|
||
BLOW_CRATE_ENTRY
|
||
|
||
ADDI BUSTOUTS,A6
|
||
MOVKB 1,*A6 ;Set the bustout flag
|
||
|
||
CALLA DELAYED_PRAISE
|
||
|
||
MOVE *A4+,A0,L
|
||
JRZ BUSTOUT_NO_FUNC
|
||
|
||
CALL A0 ;Call the bustout function
|
||
|
||
BUSTOUT_NO_FUNC
|
||
MOVI ANIM_DESTROY_CRATE,A1
|
||
MOVE @ZREL_OFF,A4,L
|
||
SRA ZFRAC,A4
|
||
MMTM SP,B0,B1
|
||
JRUC BUSTOUT_SEARCH_NEXT
|
||
|
||
BUSTOUT_SEARCH
|
||
MOVE *A8(OID),A14,W ;Get this one's I.D.
|
||
CMP A14,A5 ;Is it a bustout?
|
||
JRNE BUSTOUT_SEARCH_NEXT ;BR = No
|
||
|
||
MOVE *A8(OZVAL),A14,L
|
||
SUB A4,A14 ;Make it proper
|
||
SRL 4,A14
|
||
SLL 4,A14
|
||
CMP A14,A3 ;Is it the correct bustout?
|
||
JRNE BUSTOUT_SEARCH_NEXT ;BR = No
|
||
|
||
CALLA BG_TO_FG ;Get this out of the background A0,B0,B1 trashed
|
||
|
||
CALLA COLLS_OFF ;Safety valve
|
||
|
||
CALLA STRT_ANIM ;And do the destruction
|
||
|
||
BUSTOUT_SEARCH_NEXT
|
||
MOVE *A8(OSLINK),A8,L
|
||
JRNZ BUSTOUT_SEARCH
|
||
|
||
MMFM SP,B0,B1
|
||
|
||
CRATE_DONE
|
||
RETS
|
||
|
||
* Ensure that the crate is dead
|
||
CRATE_DEAD
|
||
MOVIM DEAD_GUNVECT,*A8(OGUNVECT),L
|
||
MOVIM DUMCOLL,*A8(OCVECT),L
|
||
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* BUSTOUT3_SUPRISE *
|
||
* *
|
||
* Suprise forklift at bustout. *
|
||
* *
|
||
**************************************************************************
|
||
BUSTOUT3_SUPRISE
|
||
MMTM SP,A0,A1,A7,A9,A10,A11
|
||
MOVI 2A90000H,A9
|
||
MOVI 31FB0H,A11
|
||
JRUC BUSTOUT_SUP_G
|
||
|
||
**************************************************************************
|
||
* *
|
||
* BUSTOUT1_SUPRISE *
|
||
* *
|
||
* Suprise forklift at bustout. *
|
||
* *
|
||
**************************************************************************
|
||
BUSTOUT1_SUPRISE
|
||
MMTM SP,A0,A1,A7,A9,A10,A11
|
||
MOVI 0F90000H,A9
|
||
MOVI 22BA0H,A11
|
||
|
||
*
|
||
* Entrypoint: Creates a forklift if the conditions are right
|
||
* A11 = Z
|
||
*
|
||
BUSTOUT_SUP_G
|
||
MOVE @ZSCROLL,A14,L
|
||
JRN BSG_X
|
||
JRZ BSG_X
|
||
MOVE @ZSACCEL,A14,L
|
||
JRN BSG_X
|
||
|
||
MOVE @ENEMY_YBASE,A10,L
|
||
|
||
CREATE PID_FORKLIFT,PROC_FRONT_FORKLIFT
|
||
|
||
MOVI SND_LOOK_OUT,A11
|
||
MOVI 60,A10
|
||
CREATE PID_IND,PROC_SND
|
||
|
||
BSG_X
|
||
MMFM SP,A0,A1,A7,A9,A10,A11
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* BUSTOUT5_SUPRISE *
|
||
* *
|
||
* Suprise forklift at big bustout. *
|
||
* *
|
||
**************************************************************************
|
||
BUSTOUT5_SUPRISE
|
||
MMTM SP,A0,A1,A7,A9,A10,A11
|
||
|
||
MOVI 54880H,A11
|
||
MOVE @ENEMY_YBASE,A10,L
|
||
|
||
MOVI 1260000H,A9
|
||
CREATE PID_FORKLIFT,PROC_FRONT_FORKLIFT
|
||
|
||
MOVI 1660000H,A9
|
||
CREATE PID_FORKLIFT,PROC_FRONT_FORKLIFT
|
||
|
||
MOVI SND_LOOK_OUT,A11
|
||
MOVI 60,A10
|
||
CREATE PID_IND,PROC_SND
|
||
|
||
MMFM SP,A0,A1,A7,A9,A10,A11
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* CRATE_FRAGS *
|
||
* *
|
||
* Create the fragments for a crate blowing up *
|
||
* *
|
||
* A8 = Crate about which fragments emerge *
|
||
* *
|
||
* Note: Trashes A0,A3 *
|
||
* *
|
||
**************************************************************************
|
||
CRATE_FRAGS
|
||
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 -10H,B10 ;MAX Z VEL
|
||
MOVI FRAG_U10_MIX,B14 ;Use this fragment script
|
||
CALLA Fragger
|
||
|
||
MOVI p_newbxx,A14
|
||
MOVE A14,*A0(FPDATA),L ;Set Palette
|
||
|
||
MMFM SP,B1,B2,B4,B5,B6,B8,B9,B10
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* CRATE_POWERUP *
|
||
* *
|
||
* Routine to disburse a powerup from a front facing crate, *
|
||
* if necessary. *
|
||
* *
|
||
* A8 = Ptr to crate *
|
||
* *
|
||
**************************************************************************
|
||
CRATE_POWERUP
|
||
PUSH A6
|
||
MOVE @CRATES_DESTROYED,A6,W
|
||
INC A6
|
||
MOVE A6,@CRATES_DESTROYED,W
|
||
CMPI NUM_CRATES_FOR_ARK,A6 ;Has he wasted all of the crates
|
||
JRLO CP_NO_ARK_YET ;BR = Yes, give the ark
|
||
|
||
MOVE @ARK_CRATE_READY,A14,W ;Have we done this yet?
|
||
JRNZ CP_NO_ARK_YET ;BR = Yes
|
||
|
||
MOVKM 1,@ARK_CRATE_READY,W
|
||
|
||
SOUND1 SND_ARK_READY
|
||
|
||
CP_NO_ARK_YET
|
||
SLL 27,A6 ;Give smart bomb every 32
|
||
JRZ CP_GIVE_SMART ;BR = And this makes it
|
||
|
||
SLL 4,A6 ;Give other shit every 2
|
||
JRNZ CP_X ;BR = This ain't it
|
||
|
||
PUSH A0
|
||
MOVK NUM_CRATE_POWERUPS,A0
|
||
CALLA RAND0
|
||
SLL 5,A0
|
||
ADDI TAB_CRATE_POWERUPS,A0
|
||
MOVE *A0,A0,L
|
||
CALL A0
|
||
PULLQ A0
|
||
JRUC CP_X
|
||
|
||
CP_GIVE_SMART
|
||
MMTM SP,A0,A1,A7,A10,A11
|
||
MOVI [-46,0],A10
|
||
MOVK 1,A11
|
||
CREATE PID_IND,REVEAL_SBOMB
|
||
MMFM SP,A0,A1,A7,A10,A11
|
||
|
||
CP_X
|
||
PULLQ A6
|
||
RETS
|
||
|
||
NUM_CRATE_POWERUPS .EQU 2
|
||
|
||
* Table of routines to give powerups in the crates
|
||
TAB_CRATE_POWERUPS
|
||
.LONG CRATE_ROCKETS
|
||
.LONG CRATE_CDS
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* ENTRANCE_CRATES *
|
||
* *
|
||
* Routine to disperse powerup in entrance crates *
|
||
* *
|
||
* A8 = Ptr to crate *
|
||
* *
|
||
**************************************************************************
|
||
ENTRANCE_CRATES
|
||
PUSH A6
|
||
MOVE @CRATES_DESTROYED,A6,W
|
||
INC A6
|
||
MOVE A6,@CRATES_DESTROYED,W
|
||
|
||
SRL 1,A6 ;Give other shit every 2
|
||
JRC EC_X ;BR = This ain't it
|
||
|
||
MMTM SP,A0,A1,A7,A10,A11
|
||
MOVK 1,A11
|
||
MOVI [-46,0],A10
|
||
CREATE PID_IND,REVEAL_SUPERGUN
|
||
MMFM SP,A0,A1,A7,A10,A11
|
||
|
||
EC_X
|
||
PULLQ A6
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* CRATE_ROCKETS *
|
||
* *
|
||
* Routine to award rockets in a crate. *
|
||
* *
|
||
* A8 = Ptr to crate *
|
||
* *
|
||
**************************************************************************
|
||
CRATE_ROCKETS
|
||
MMTM SP,A0,A1,A6,A7,A10,A11
|
||
|
||
MOVK 1,A11
|
||
MOVI PID_IND,A1
|
||
MOVI REVEAL_PROCK,A7
|
||
MOVK 6,A0
|
||
CALLA RANDU
|
||
MOVE A0,A6
|
||
|
||
MOVI [-26,-13],A10
|
||
CALLA GETPRC
|
||
DEC A6
|
||
JRZ CR_X
|
||
|
||
MOVI [-26,11],A10
|
||
CALLA GETPRC
|
||
DEC A6
|
||
JRZ CR_X
|
||
|
||
MOVI [-47,-13],A10
|
||
CALLA GETPRC
|
||
DEC A6
|
||
JRZ CR_X
|
||
|
||
MOVI [-47,11],A10
|
||
CALLA GETPRC
|
||
DEC A6
|
||
JRZ CR_X
|
||
|
||
MOVI [-67,-13],A10
|
||
CALLA GETPRC
|
||
DEC A6
|
||
JRZ CR_X
|
||
|
||
MOVI [-67,11],A10
|
||
CALLA GETPRC
|
||
|
||
CR_X
|
||
MMFM SP,A0,A1,A6,A7,A10,A11
|
||
RETS
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* CRATE_CDS *
|
||
* *
|
||
* Routine to award CD in a crate. *
|
||
* *
|
||
* A8 = Ptr to crate *
|
||
* *
|
||
**************************************************************************
|
||
CRATE_CDS
|
||
MMTM SP,A0,A1,A7,A10,A11
|
||
MOVK 1,A11
|
||
MOVI [-46,0],A10
|
||
CREATE PID_IND,REVEAL_CD
|
||
MMFM SP,A0,A1,A7,A10,A11
|
||
RETS
|
||
|
||
|
||
*
|
||
* Gate
|
||
*
|
||
WARE_GATE_CVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,GATE_EXPLOSION_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* GATE_EXPLOSION_CVECT *
|
||
* *
|
||
* Collision service vector for the Warehouse Gate. *
|
||
* *
|
||
* A0 = Ptr to explosion object *
|
||
* A8 = Ptr to Gate *
|
||
* *
|
||
**************************************************************************
|
||
GATE_EXPLOSION_CVECT
|
||
CALLA UNIV_COLL_CHECK ;See if this was a valid collision
|
||
JRNZ GATE_DONE ;BR = No
|
||
|
||
MOVE @IN_MAKE_DECISION,A14,W
|
||
JRNZ GATE_DONE ;BR = No gate banging in decision
|
||
|
||
MOVB *A8(OFLAGS),A14 ;Is this half off-screen?
|
||
JRN GATE_DONE ;BR = Yes, just a cool snd
|
||
|
||
MOVE *A8(OZVAL),A1,L
|
||
MOVE @ZBASE,A2,L
|
||
SUB A2,A1 ;Universe to World Z
|
||
|
||
CMPI 09000H,A1 ;Are we too far out?
|
||
JRGT GATE_DONE ;BR = Yes, just make cool snd
|
||
|
||
MOVE *A0(OID),A0,W
|
||
CALLA POID_TO_PDATA ;Get player's data area
|
||
|
||
MOVK M_LASTFRM|M_FLASHOBJ,A7 ;Last frame and flash
|
||
|
||
CLR A5 ;No points for match
|
||
CLR A9 ;Printed score offset
|
||
CALLA FIND_MY_MATCH ;Find matching object
|
||
JRZ GATE_NO_MATCH ;BR = There isn't one
|
||
|
||
MOVB *A0(OFLAGS),A14 ;Is this half off-screen?
|
||
JRN GATE_DONE ;BR = Yes, just a cool snd
|
||
|
||
PUSH A8 ;Store this half
|
||
MOVE A0,A8
|
||
CALLA UNIV_DAMAGE_HANDLER ;Call damage on match
|
||
JRNC GATE_MATCH_NOT_LAST ;BR = Match still has some left
|
||
MOVIM DUMCOLL,*A8(OCVECT),L
|
||
ANDNIM M_NOPIXSCAN,*A8(OFLAGS),W ;Clear pixscan when done
|
||
MOVE *A8(OULINK),A5,L
|
||
ANDNIM M_BF_NOPXSCN,*A5(MAP_FLAGS),W ;Clear background link copy
|
||
|
||
GATE_MATCH_NOT_LAST
|
||
PULLQ A8 ;Get us back our half
|
||
GATE_NO_MATCH
|
||
MOVI 1000,A5 ;Points for killing gate
|
||
CALLA UNIV_DAMAGE_HANDLER ;Call damage on this gate
|
||
JRNC GATE_DONE ;BR = We haven't hit the last frame
|
||
|
||
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 -10H,B10 ;MAX Z VEL
|
||
MOVI FRAG_U20_MIX,B14 ;Use this fragment script
|
||
CALLA Fragger
|
||
|
||
MOVI p_secudor,A14
|
||
MOVE A14,*A0(FPDATA),L ;Set Palette
|
||
|
||
MMFM SP,B1,B2,B4,B5,B6,B8,B9,B10
|
||
|
||
MOVE *A8(OID),A6,W ;Get our Object I.D.
|
||
ANDI MASK_ID,A6 ;Isolate the I.D. of the block
|
||
SRL BIT_ID,A6
|
||
SUBK FIRST_GATE_ID,A6
|
||
MOVE A6,A1
|
||
SLL 3,A1
|
||
ADDI GATES_BLOWN,A1
|
||
INCB *A1 ;Flag the gate as blown
|
||
|
||
SLL 5,A6
|
||
ADDI TAB_GATE_SCROLL_CHANGE,A6
|
||
MOVE *A6,A0,L ;Get the new scroll vector
|
||
JRZ GATE_NO_SCROLL_CHANGE
|
||
|
||
; MOVE @ZSCROLL,A14,L ;Are we already moving forward
|
||
; JRP GATE_NO_SCROLL_CHANGE ;BR = Yes, no changing now
|
||
|
||
CALLA CHNG_SCRL_TBL ;Change the direction of scroll
|
||
|
||
CALLA DELAYED_PRAISE
|
||
|
||
GATE_NO_SCROLL_CHANGE
|
||
SOUNDZ SND_GATE_EXPLODE
|
||
|
||
ANDNIM M_NOPIXSCAN,*A8(OFLAGS),W ;Clear pixscan when done
|
||
MOVIM DUMCOLL,*A8(OCVECT),L
|
||
MOVE *A8(OULINK),A5,L
|
||
ANDNIM M_BF_NOPXSCN,*A5(MAP_FLAGS),W ;Clear background link copy
|
||
|
||
GATE_DONE
|
||
RETS
|
||
|
||
*
|
||
*Table of new scroll vectors for when we blow a gate (0 = no change)
|
||
*
|
||
TAB_GATE_SCROLL_CHANGE
|
||
.LONG JAPA_GATE1_ZAP ;Gate 1
|
||
.LONG JAPA_GATE2_ZAP ;Gate 2
|
||
.LONG JAPA_GATE3_ZAP ;Gate 3
|
||
.LONG JAPA_GATE4_ZAP ;Gate 4
|
||
.LONG JAPA_GATE5_ZAP ;Gate 5
|
||
.LONG JAPA_GATE6_ZAP ;Gate 6
|
||
.LONG JAPA_GATE7_ZAP ;Gate 7
|
||
.LONG JAPA_GATE8_ZAP ;Gate 8
|
||
.LONG JAPA_GATE9_ZAP ;Gate 9
|
||
.LONG JAPA_GATE10_ZAP ;Gate 10
|
||
.LONG JAPA_GATE11_ZAP ;Gate 11
|
||
.LONG JAPA_GATE12_ZAP ;Gate 12
|
||
.LONG JAPA_GATE13_ZAP ;Gate 13
|
||
.LONG JAPA_GATE14_ZAP ;Gate 14
|
||
.LONG JAPA_GATE15_ZAP ;Gate 15
|
||
.LONG JAPA_GATE16_ZAP ;Gate 16
|
||
.LONG JAPA_GATE17_ZAP ;Gate 17
|
||
.LONG JAPA_GATE18_ZAP ;Gate 18
|
||
.LONG JAPA_GATE19_ZAP ;Gate 19
|
||
|
||
**************************************************************************
|
||
* *
|
||
* GATE_GUNVECT *
|
||
* *
|
||
* Gun vector for the Warehouse Gate. *
|
||
* *
|
||
* A2 = Ptr to player shooting *
|
||
* A8 = Ptr to gate *
|
||
* *
|
||
**************************************************************************
|
||
GATE_GUNVECT
|
||
CALLA DGV_FRAG_SPARK
|
||
|
||
SOUNDZ SND_GATE_HIT ;Give a little sound to ack
|
||
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* METAL_GUNVECT *
|
||
* *
|
||
* Gun vector for the warehouse gate metal tracks. *
|
||
* *
|
||
* A2 = Ptr to player shooting *
|
||
* A8 = Ptr to metal stuff *
|
||
* *
|
||
**************************************************************************
|
||
METAL_GUNVECT
|
||
CALLA DGV_FRAG_SPARK
|
||
|
||
SOUNDZ SND_METAL_HIT ;Give a little sound to ack
|
||
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* MARS_GUNVECT *
|
||
* *
|
||
* Gun vector for the Mars light. *
|
||
* *
|
||
* A2 = Ptr to player shooting *
|
||
* A8 = Ptr to light *
|
||
* *
|
||
**************************************************************************
|
||
MARS_GUNVECT
|
||
CLRM *A8(O_BOOTY),L ;No loot here
|
||
LIGHT_GV_G
|
||
MOVI 500,A5 ;Points for killing this
|
||
MOVK M_FLASHOBJ,A7 ;Flash if we hit it
|
||
CLR A9 ;Offset for printed score
|
||
CALLA UNIV_DAMAGE_HANDLER ;Call the handler
|
||
JRC MARS_EXPLODE ;BR = Time to destroy
|
||
|
||
RETS
|
||
|
||
*
|
||
* Mars light collision
|
||
*
|
||
MARS_CVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,MARS_EXPLOSION_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* MARS_EXPLOSION_CVECT *
|
||
* *
|
||
* Collision service vector for the Mars light. *
|
||
* *
|
||
* A0 = Ptr to explosion object *
|
||
* A8 = Ptr to Mars light *
|
||
* *
|
||
**************************************************************************
|
||
MARS_EXPLOSION_CVECT
|
||
CLRM *A8(O_BOOTY),L ;No loot here
|
||
LIGHT_EXP_G
|
||
CALLA UNIV_COLL_CHECK ;See if this was a valid collision
|
||
JRNZ MARS_DONE ;BR = No
|
||
|
||
MOVE *A0(OID),A0,W
|
||
CALLA POID_TO_PDATA ;Get player's data area
|
||
|
||
MOVI 500,A5 ;Points for killing this thing
|
||
MOVK M_LASTFRM|M_FLASHOBJ,A7 ;Last frame and flash
|
||
CLR A9 ;Offset for printed score
|
||
CALLA UNIV_DAMAGE_HANDLER ;Do the patented damage shit
|
||
JRNC MARS_DONE ;BR = Damage already done
|
||
|
||
*
|
||
*Here we explode the Mars light
|
||
*A8 = Ptr to Mars light
|
||
*
|
||
MARS_EXPLODE
|
||
SOUNDZ SND_MARS_EXPLODE
|
||
|
||
MOVIM DEAD_GUNVECT,*A8(OGUNVECT),L
|
||
MOVIM DUMCOLL,*A8(OCVECT),L
|
||
|
||
MOVE *A8(O_BOOTY),A14,L ;Is there a loot func?
|
||
JRZ MARS_DO_FRAGS ;BR = No
|
||
|
||
CALL A14 ;Call loot func
|
||
|
||
* Aisle light ground hit animation uses this
|
||
MARS_DO_FRAGS
|
||
|
||
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 -10H,B10 ;MAX Z VEL
|
||
MOVI FRAG_U5,B14 ;Use this fragment script
|
||
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
|
||
|
||
MARS_DONE
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* ALIGHT_GUNVECT *
|
||
* *
|
||
* Gun vector for the light hanging above aisles. *
|
||
* *
|
||
* A2 = Ptr to player shooting *
|
||
* A8 = Ptr to light *
|
||
* *
|
||
**************************************************************************
|
||
ALIGHT_GUNVECT
|
||
MOVIM ALIGHT_BOOTY,*A8(O_BOOTY),L
|
||
JRUC LIGHT_GV_G
|
||
|
||
*
|
||
* Aisle light collision
|
||
*
|
||
ALIGHT_CVECT
|
||
WWL OID_PROCKET,~MASK_PLAYER,UNIV_ROCKET_COLL
|
||
WWL OID_PEXPLOSION,~MASK_PLAYER,ALIGHT_EXPLOSION_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
ALIGHT_CVECT2
|
||
WWL OID_GRND,0FFFFH,LIGHT_GROUND_CVECT
|
||
WL 0,DUMCRETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* LIGHT_GROUND_CVECT *
|
||
* *
|
||
* Collision service for light hitting the ground *
|
||
* *
|
||
* A8 = Ptr to light *
|
||
* *
|
||
**************************************************************************
|
||
LIGHT_GROUND_CVECT
|
||
CALLA STOPOBJ
|
||
CALLA COLLS_OFF
|
||
SOUNDZ SND_LIGHT_CRASH
|
||
MOVI ANIM_ALIGHT_EXP,A1
|
||
JAUC STRT_ANIM
|
||
|
||
**************************************************************************
|
||
* *
|
||
* ALIGHT_EXPLOSION_CVECT *
|
||
* *
|
||
* Collision service vector for the Aisle light. *
|
||
* *
|
||
* A0 = Ptr to explosion object *
|
||
* A8 = Ptr to light *
|
||
* *
|
||
**************************************************************************
|
||
ALIGHT_EXPLOSION_CVECT
|
||
MOVIM ALIGHT_BOOTY,*A8(O_BOOTY),L
|
||
JRUC LIGHT_EXP_G
|
||
|
||
**************************************************************************
|
||
* *
|
||
* ALIGHT_BOOTY *
|
||
* *
|
||
* Get some of that Ali booty. *
|
||
* *
|
||
* A8 = Ptr to aisle light *
|
||
* *
|
||
**************************************************************************
|
||
ALIGHT_BOOTY
|
||
MMTM SP,B0,B1
|
||
CALLA BG_TO_FG ;Move object out of universe
|
||
|
||
MOVIM ALIGHT_CVECT2,*A8(OCVECT),L
|
||
CLRM *A8(OGUNVECT),L
|
||
ORIM M_GCOLL,*A8(OFLAGS),W
|
||
MOVIM 3000H,*A8(OYACCEL),W
|
||
|
||
MMFM SP,B0,B1
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* ARK_REVEAL *
|
||
* *
|
||
* Reveal the ark. *
|
||
* *
|
||
* A8 = Ptr to object that holds the ark *
|
||
* *
|
||
**************************************************************************
|
||
ARK_REVEAL
|
||
PUSH A0
|
||
SOUND1 SND_ARK_AWARD
|
||
PULLQ A0
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* WHITFORD_SIGN *
|
||
* *
|
||
* Place the sign to get you to Brad Whitford. *
|
||
* *
|
||
* A8 = Ptr to object this sign is in. *
|
||
* *
|
||
**************************************************************************
|
||
WHITFORD_SIGN
|
||
MMTM SP,A1,A10,A11
|
||
PUSH B0
|
||
MOVI [-40,0],A10
|
||
MOVK 1,A11
|
||
MOVI RIGHT_SIGN_INIT,B0
|
||
CALLR REVEAL_OBJECT
|
||
JRZ WS_X
|
||
MOVI ANIM_WHITSIGN,A1
|
||
CALLA STRT_ANIM
|
||
WS_X
|
||
PULL B0
|
||
MMFM SP,A1,A10,A11
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* WHITSIGN_GUNVECT *
|
||
* *
|
||
* Gun vector for the sign that takes us to Brad Whitford. *
|
||
* *
|
||
* A2 = Ptr to player *
|
||
* A8 = Ptr to sign object *
|
||
* *
|
||
**************************************************************************
|
||
WHITSIGN_GUNVECT
|
||
MOVI JAPA_WHIT_ZAP,A0 ;This is how we go
|
||
CALLA CHNG_SCRL_TBL ;Change the direction of scroll
|
||
|
||
SOUND1 SND_DIR_CHOSEN ;Make some noise
|
||
|
||
CLRM *A8(OGUNVECT),L ;No more shooty
|
||
|
||
CALLA DELAYED_PRAISE
|
||
|
||
MOVI ANIM_FLASH_DEL,A1 ;Flash and trash
|
||
JAUC STRT_ANIM
|
||
|
||
|
||
*
|
||
* Sign that says, go right
|
||
*
|
||
RIGHT_SIGN_INIT
|
||
.byte 1, 0, 1, 0 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
||
.long BRDICON ;PAL LIST
|
||
.word OID_JUNK, OM_DUMCOLL
|
||
LWWWW BRDICON, DMAWNZ, M_NOPIXSCAN, 0, OM_ANIM
|
||
.LONG ANIM_OFFSCREEN_CK
|
||
|
||
**************************************************************************
|
||
* *
|
||
* REVEAL_OBJECT *
|
||
* *
|
||
* Make an object and place it in reference to another. *
|
||
* (i.e. Blow open a crate and voila, something is there.) *
|
||
* *
|
||
* A8 = Object this is coming from *
|
||
* A10 = [Y,X] Screen offset from aboves animation pnt. *
|
||
* A11 = Amount to add to OZVAL of new object *
|
||
* *
|
||
* B0 = Create table for new object *
|
||
* *
|
||
* Returns: *
|
||
* *
|
||
* Z = No object *
|
||
* NZ = Got object, A8 = ptr *
|
||
* *
|
||
**************************************************************************
|
||
REVEAL_OBJECT
|
||
MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7
|
||
MMTM SP,B1,B2,B3,B4,B5,B6,B7,B8,B9,B10
|
||
|
||
PUSH A8
|
||
CALLA MULTIMAKE ;Make the object
|
||
MOVE A8,A0
|
||
PULL A8 ;PULL MUST PRESERVE STATUS, DON'T USE PULLQ
|
||
JRZ RO_X
|
||
|
||
MOVE *A8(OXVAL),A1,L ;GET X POSITION
|
||
MOVE A10,A14
|
||
SEXT A14,W
|
||
SLL 15,A14 ;TRANSLATE OFFSET TO WORLD
|
||
ADD A14,A1 ;NEW X POSITION
|
||
|
||
MOVE *A8(OYVAL),A2,L ;GET Y POSITION
|
||
SRA 16,A10
|
||
SLL 15,A10 ;TRANSLATE OFFSET TO WORLD
|
||
ADD A10,A2 ;NEW Y POSITION
|
||
|
||
MOVE A0,A3
|
||
RO_PART_LUPE
|
||
MOVE A1,*A3(OXVAL),L
|
||
MOVE A2,*A3(OYVAL),L
|
||
MOVE *A3(OPARTS),A3,L
|
||
JRNZ RO_PART_LUPE
|
||
|
||
MOVE *A8(OZVAL),A1,L
|
||
SUB A11,A1 ;ADD Z OFFSET
|
||
MOVE A0,A8
|
||
CALLA STORE_ZVAL
|
||
|
||
CALLA INSERT_OBJ
|
||
MOVE A8,A8
|
||
RO_X
|
||
MMFM SP,B1,B2,B3,B4,B5,B6,B7,B8,B9,B10
|
||
MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* Animations for the Warehouse *
|
||
* *
|
||
**************************************************************************
|
||
*
|
||
* Destroy a crate
|
||
*
|
||
ANIM_DESTROY_CRATE
|
||
LWLWW 1,1|AFunc,A_RAND_AnimSLP+2,1,15
|
||
LW 1,0
|
||
LWLLLL 1,10|AFunc,A_PreFrag_Center+6,FRAG_CRATE_EXPLOSION,0800h,30000h
|
||
LWL 1,1|AFunc,CRATE_FRAGS
|
||
LWL 1,1|AFunc,DELETE_OBJ
|
||
|
||
*
|
||
* Initiate the Whitford sign
|
||
*
|
||
ANIM_WHITSIGN
|
||
LW 1,20
|
||
LWLL 1,8|AFunc,A_SET_OYVEL+2,30000H
|
||
LWLL 1,1|AFunc,A_SET_OYVEL+2,0
|
||
LWLL 1,1|AFunc,A_SOUND+2,SND_SIGN_HERE
|
||
LWLWL 1,1|AFunc,A_Set_Rel_Long+3,OGUNVECT,WHITSIGN_GUNVECT
|
||
LWLL 1,1|AFunc,A_AnimGo+2,ANIM_OFFSCREEN_CK
|
||
*
|
||
* Animation to check if an object is offscreen, then delete.
|
||
*
|
||
ANIM_OFFSCREEN_CK
|
||
LWLL 1,10|AFunc,A_ONSCREEN+2,ANIM_OFFSCREEN_CK
|
||
LWL 1,1|AFunc,DELETE_OBJ
|
||
|
||
*
|
||
* Animation to flash an object off and on then delete
|
||
*
|
||
ANIM_FLASH_DEL
|
||
LWLW 1,1|AFunc,A_Set_AnimLoop+1,6
|
||
ANIM_FD_LOOP
|
||
LWL 1,4|AFunc,OBJ_OFF
|
||
LWL 1,3|AFunc,OBJ_ON
|
||
LWLL 1,1|AFunc,A_Anim_DSJ+2,ANIM_FD_LOOP
|
||
LWL 1,1|AFunc,DELETE_OBJ
|
||
|
||
*
|
||
* Aisle light hitting the ground
|
||
*
|
||
ANIM_ALIGHT_EXP
|
||
LWL 1,1|AFunc,OBJ_CONST
|
||
LWL 1,3|AFunc,MARS_DO_FRAGS
|
||
LWL 1,1|AFunc,DELETE_OBJ
|
||
|
||
**************************************************************************
|
||
* *
|
||
* DELETE_UNIV_OBJ *
|
||
* *
|
||
* Delete a Universe object from the universe list and the *
|
||
* object list. *
|
||
* *
|
||
* A8 = Ptr to object *
|
||
* *
|
||
**************************************************************************
|
||
DELETE_UNIV_OBJ
|
||
MMTM SP,B0,B1 ;'Cause of Warren's shit
|
||
CALLA BG_TO_FG ;Take it out of the universe
|
||
MMFM SP,B0,B1
|
||
JAUC DELETE_OBJ ;And delete it
|
||
|
||
**************************************************************************
|
||
* *
|
||
* A_ADD_XPOS *
|
||
* *
|
||
* Anim func to add a given constant to the objects *
|
||
* OXPOS. Value is negated if object is flipped. *
|
||
* *
|
||
* A8 = Ptr to object *
|
||
* AARG+,W = value to add *
|
||
* *
|
||
**************************************************************************
|
||
A_ADD_XPOS
|
||
CALLA GETAFARG_WORD
|
||
MOVE *A8(OCTRL),A14,W
|
||
BTST B_FLIPH,A14
|
||
JRZ AAX_ADD
|
||
NEG A0
|
||
AAX_ADD
|
||
ADDRM A0,*A8(OXPOS),W
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* Fragment scripts and funcs for the Warehouse *
|
||
* *
|
||
**************************************************************************
|
||
FRAG_CRATE_EXPLOSION
|
||
.long PART_EXPLOSION,F_EXPLOSION_OUT
|
||
.word OID_JUNK,3*800H+10*40H+FRGPAL+FRGNOFLY
|
||
.long PART_EXPLOSION,F_EXPLOSION_OUT
|
||
.word OID_JUNK,3*800H+1*40H+FRGPAL+FRGNOFLY
|
||
.LONG 0
|
||
|
||
**************************************************************************
|
||
* *
|
||
* Dispatch Tables for Crates *
|
||
* *
|
||
**************************************************************************
|
||
|
||
*
|
||
* Initial dispatch
|
||
*
|
||
SLOW_ROW0_DISPATCH
|
||
.LONG SLOW_ROW0_DSP,0
|
||
.WORD 0, 0, 0, 0, 0, 0, 0, 0
|
||
.WORD 0, 0, 0, 0, 0, 0, 0, 1
|
||
|
||
SLOW_ROW0_DSP
|
||
.WORD 0 ;END OF INITIAL DISPATCH TABLE
|
||
|
||
.WORD 6*60,PID_NONBOY
|
||
.LONG 08910H,05A40H,[0,50],0H,PROC_NONBOY_CRATE_RUN
|
||
|
||
.WORD 0FFFEH
|
||
.LONG ROW0_SIDE_GUYS
|
||
|
||
*
|
||
* Dispatch for ROW 1
|
||
*
|
||
FAST_ROW0_DISPATCH
|
||
.LONG FAST_ROW0_DSP,0
|
||
.WORD 0, 0, 0, 0, 0, 0, 0, 0
|
||
.WORD 0, 0, 0, 0, 0, 0, 0, 1
|
||
|
||
FAST_ROW0_DSP
|
||
.WORD 0 ;END OF INITIAL DISPATCH TABLE
|
||
|
||
.WORD 1,PID_NONBOY
|
||
.LONG 06910H,06910H,[M_AISLE_CHECK,50],0H,PROC_NONBOY_CRATE_RUN
|
||
|
||
.WORD 5,PID_NONBOY
|
||
.LONG 08910H,05A40H,[0,50],0H,PROC_NONBOY_CRATE_RUN
|
||
|
||
.WORD 10,PID_NONBOY
|
||
.LONG 06910H,06910H,[M_AISLE_CHECK,50],0H,PROC_NONBOY_CRATE_RUN
|
||
|
||
.WORD 20,PID_NONBOY
|
||
.LONG 08910H,05A40H,[0,50],0H,PROC_NONBOY_CRATE_RUN
|
||
|
||
.WORD 30,PID_NONBOY
|
||
.LONG 08910H,05A40H,[0,50],0H,PROC_NONBOY_CRATE_RUN
|
||
|
||
.WORD 40,PID_NONBOY
|
||
.LONG 08910H,05A40H,[0,50],0H,PROC_NONBOY_CRATE_RUN
|
||
|
||
.WORD 50,PID_NONBOY
|
||
.LONG 06910H,06910H,[M_AISLE_CHECK,50],0H,PROC_NONBOY_CRATE_RUN
|
||
|
||
.WORD 60,PID_NONBOY
|
||
.LONG 08910H,05A40H,[0,50],0H,PROC_NONBOY_CRATE_RUN
|
||
|
||
.WORD 80,PID_NONBOY
|
||
.LONG 06910H,06910H,[M_AISLE_CHECK,50],0H,PROC_NONBOY_CRATE_RUN
|
||
|
||
.WORD 120,PID_NONBOY
|
||
.LONG 06910H,06910H,[M_AISLE_CHECK,50],0H,PROC_NONBOY_CRATE_RUN
|
||
|
||
.WORD 180,PID_NONBOY
|
||
.LONG 06910H,06910H,[M_AISLE_CHECK,50],0H,PROC_NONBOY_CRATE_RUN
|
||
|
||
.WORD 0FFFEH
|
||
.LONG ROW0_SIDE_GUYS
|
||
|
||
ROW0_SIDE_GUYS
|
||
.WORD 30,PID_NONBOY
|
||
.LONG 08910H,05A40H,[0,50],0H,PROC_NONBOY_CRATE_RUN
|
||
|
||
.WORD 0FFFEH
|
||
.LONG ROW0_SIDE_GUYS
|
||
|
||
|
||
*
|
||
* Dispatch for AN ROW
|
||
*
|
||
ROW_DISPATCH
|
||
.LONG ROW_DSP,0
|
||
.WORD 0, 0, 0, 0, 0, 0, 0, 0
|
||
.WORD 0, 0, 0, 0, 0, 0, 0, 1
|
||
|
||
ROW_DSP
|
||
.WORD 0 ;END OF INITIAL DISPATCH TABLE
|
||
ROW_SIDE_GUYS
|
||
.WORD 30,PID_NONBOY
|
||
.LONG 0,0,[0,45],0H,PROC_NONBOY_CRATE_RUN2
|
||
|
||
.WORD 60,PID_NINJA
|
||
.LONG 0,0,0,0H,PROC_NINJA_CRATE_JUMPIN
|
||
|
||
.WORD 0
|
||
|
||
AISLE_FORK_DISPATCH
|
||
.LONG DSPTAB_AISLE_FORK,0
|
||
.WORD 0, 0, 0, 0, 0, 0, 0, 0
|
||
.WORD 0, 0, 0, 0, 0, 0, 0, 1
|
||
|
||
DSPTAB_AISLE_FORK
|
||
.WORD PID_FORKLIFT
|
||
.LONG 0,0,0,0,PROC_SIDE_FORKLIFT_CRATE
|
||
.WORD 0 ;END OF INITIAL DISPATCH TABLE
|
||
|
||
.WORD 180,PID_JUNK
|
||
.LONG 0,0,0,0,DUMDIE
|
||
|
||
.WORD 0FFFEH
|
||
.LONG ROW_SIDE_GUYS
|
||
|
||
.WORD -1
|
||
|
||
*
|
||
* Dispatch for AN AISLE
|
||
*
|
||
AISLE_DISPATCH
|
||
.LONG AISLE_DSP,0
|
||
.WORD 0, 0, 0, 0, 0, 0, 0, 0
|
||
.WORD 0, 0, 0, 0, 0, 0, 0, 1
|
||
|
||
AISLE_DSP
|
||
.WORD 0 ;END OF INITIAL DISPATCH TABLE
|
||
|
||
.WORD 1,PID_NONBOY
|
||
; .LONG -02000H,0ED0H,[M_AISLE_CHECK,45],0H,PROC_NONBOY_CRATE_RUN2
|
||
.LONG 0,0,[M_AISLE_CHECK,45],0H,PROC_NONBOY_CRATE_RUN2
|
||
|
||
.WORD 5,PID_NONBOY
|
||
.LONG 0,0,[0,45],0H,PROC_NONBOY_CRATE_RUN2
|
||
|
||
.WORD 10,PID_NONBOY
|
||
.LONG 0,0,[M_AISLE_CHECK,45],0H,PROC_NONBOY_CRATE_RUN2
|
||
|
||
.WORD 20,PID_NONBOY
|
||
.LONG 0,0,[0,45],0H,PROC_NONBOY_CRATE_RUN2
|
||
|
||
.WORD 30,PID_NONBOY
|
||
.LONG 0,0,[0,45],0H,PROC_NONBOY_CRATE_RUN2
|
||
|
||
.WORD 40,PID_NONBOY
|
||
.LONG 0,0,[0,45],0H,PROC_NONBOY_CRATE_RUN2
|
||
|
||
.WORD 50,PID_NONBOY
|
||
.LONG 0,0,[M_AISLE_CHECK,45],0H,PROC_NONBOY_CRATE_RUN2
|
||
|
||
.WORD 60,PID_NONBOY
|
||
.LONG 0,0,[0,45],0H,PROC_NONBOY_CRATE_RUN2
|
||
|
||
.WORD 80,PID_NONBOY
|
||
.LONG 0,0,[M_AISLE_CHECK,45],0H,PROC_NONBOY_CRATE_RUN2
|
||
|
||
.WORD 120,PID_NONBOY
|
||
.LONG 0,0,[M_AISLE_CHECK,45],0H,PROC_NONBOY_CRATE_RUN2
|
||
|
||
.WORD 180,PID_NONBOY
|
||
.LONG 0,0,[M_AISLE_CHECK,45],0H,PROC_NONBOY_CRATE_RUN2
|
||
|
||
.WORD 0FFFEH
|
||
.LONG ROW_SIDE_GUYS
|
||
|
||
|
||
*
|
||
* Dispatch table for fork lift alley
|
||
*
|
||
ALLEY_DISPATCH
|
||
.LONG ALLEY_DSP,0
|
||
.WORD 0, 0, 0, 0, 0, 0, 0, 0
|
||
.WORD 0, 0, 0, 0, 0, 0, 0, 1
|
||
|
||
ALLEY_DSP
|
||
.WORD PID_FORKLIFT
|
||
.LONG 0,0,0,0,PROC_FRONT_FORK_ALLEY
|
||
|
||
.WORD 0 ;END OF INITIAL DISPATCH TABLE
|
||
|
||
.WORD 90,PID_FORKLIFT
|
||
.LONG 0,0,0,0,PROC_FRONT_FORK_ALLEY
|
||
|
||
.WORD 0
|
||
|
||
|
||
DUMMY_DISPATCH
|
||
.LONG DUMMY_DSP,0
|
||
.WORD 0, 0, 0, 0, 0, 0, 0, 0
|
||
.WORD 0, 0, 0, 0, 0, 0, 0, 1
|
||
|
||
|
||
*
|
||
* Dispatch for AN DEADEND
|
||
*
|
||
DEADEND_DISPATCH
|
||
.LONG DEADEND_DSP,0
|
||
.WORD 0, 0, 0, 0, 0, 0, 0, 0
|
||
.WORD 0, 0, 0, 0, 0, 0, 0, 1
|
||
|
||
DEADEND_DSP
|
||
; .WORD PID_NONBOY
|
||
; .LONG 07C770H,0138000H,-06A0000H,0280000H,CREATE_DROP_SHOOTING_WORLDBOY
|
||
.WORD 0 ;END OF INITIAL DISPATCH TABLE
|
||
.WORD 10,PID_NONBOY
|
||
.LONG [0200H,0100H],[-04H,-04H],[0100H,-0100H],0,CREATE_JUMPON_NONBOY
|
||
.WORD 0
|
||
|
||
|
||
DUMMY_DSP
|
||
.WORD 0 ;END OF INITIAL DISPATCH TABLE
|
||
.WORD -1
|
||
|
||
**************************************************************************
|
||
* *
|
||
* Sounds for Japan office damage *
|
||
* *
|
||
**************************************************************************
|
||
SND_METAL_HIT
|
||
.WORD 0F308H,24,0A1E3H,0 ;Metal being hit
|
||
SND_GATE_HIT
|
||
.WORD 0F308H,38,0A402H,0 ;Gate being hit by bullet
|
||
SND_GATE_EXPLODE
|
||
.WORD 0F340H,72,0A405H,0 ;Gate being blown out
|
||
SND_MARS_EXPLODE
|
||
.WORD 0F340H,53,0A3C5H,0
|
||
SND_BIG_DOOR
|
||
.WORD 0F380H,273,08360H,0
|
||
;SND_XFADE_HOLD
|
||
; .WORD 0F1FDH,2*60,0801CH,0 ;X-fade hold track
|
||
SND_FACTORY
|
||
; .WORD 0F0FDH,1,0801BH,0 ;Japanese main factory
|
||
.WORD 0F0FDH,1,0800EH,0 ;Japanese main factory
|
||
SND_LIGHT_CRASH
|
||
.WORD 0F340H,64,0A32EH,0
|
||
SND_ARK_READY
|
||
.WORD 0E350H,150,08060,0 ;Ark is ready to be received
|
||
SND_ARK_AWARD
|
||
.WORD 0E351H,293,08061,0 ;Ark award
|
||
SND_SIGN_HERE
|
||
.WORD 0F342H,23,084F4H,0 ;Whitford sign just arrived
|
||
|
||
SND_LOOK_OUT
|
||
.WORD 0F3D1H,22,08806H,0 ;"Look Out!"
|
||
|
||
**************************************************************************
|
||
* *
|
||
* Collision vector tables for Japan universe. *
|
||
* *
|
||
* Each Table is made up of 32 entries, one for *
|
||
* each allowable background ID. *
|
||
* *
|
||
* Each entry: *
|
||
* *
|
||
* .LONG Collision_Vector, Gun_Vector *
|
||
* *
|
||
**************************************************************************
|
||
JAP_WARE_VECT_TABLE
|
||
;1, 2
|
||
.LONG 0, 0, WARE_CRATE_CVECT, CRATE_GUNVECT
|
||
;3, 4
|
||
.LONG DUMCOLL, METAL_GUNVECT, DUMCOLL, BRICK_GRY_GUNVECT
|
||
;5, 6
|
||
.LONG MARS_CVECT, MARS_GUNVECT, VIDCAM_CVECT, VIDCAM_GUNVECT
|
||
;7, 8
|
||
.LONG ACRATE_CVECT, ACRATE_GUNVECT, SIGN_CVECT, SIGN_GUNVECT
|
||
;9, 10
|
||
.LONG WARE_GATE_CVECT, GATE_GUNVECT, WARE_GATE_CVECT, GATE_GUNVECT
|
||
;11, 12
|
||
.LONG WARE_GATE_CVECT, GATE_GUNVECT, WARE_GATE_CVECT, GATE_GUNVECT
|
||
;13, 14
|
||
.LONG WARE_GATE_CVECT, GATE_GUNVECT, WARE_GATE_CVECT, GATE_GUNVECT
|
||
;15, 16
|
||
.LONG WARE_GATE_CVECT, GATE_GUNVECT, WARE_GATE_CVECT, GATE_GUNVECT
|
||
;17, 18
|
||
.LONG WARE_GATE_CVECT, GATE_GUNVECT, WARE_GATE_CVECT, GATE_GUNVECT
|
||
;19, 20
|
||
.LONG WARE_GATE_CVECT, GATE_GUNVECT, WARE_GATE_CVECT, GATE_GUNVECT
|
||
;21, 22
|
||
.LONG WARE_GATE_CVECT, GATE_GUNVECT, WARE_GATE_CVECT, GATE_GUNVECT
|
||
;23, 24
|
||
.LONG WARE_GATE_CVECT, GATE_GUNVECT, WARE_GATE_CVECT, GATE_GUNVECT
|
||
;25, 26
|
||
.LONG WARE_GATE_CVECT, GATE_GUNVECT, WARE_GATE_CVECT, GATE_GUNVECT
|
||
;27, 28
|
||
.LONG WARE_GATE_CVECT, GATE_GUNVECT, WCRATE_CVECT, WCRATE_GUNVECT
|
||
;29, 30
|
||
.LONG DUMPSTER_COLLVECT, DUMPSTER_GUNVECT, SIDE_CRATE_CVECT, SIDE_CRATE_GUNVECT
|
||
;31, 32
|
||
.LONG ALIGHT_CVECT, ALIGHT_GUNVECT, BUSTOUT_CVECT, BUSTOUT_GUNVECT
|
||
|
||
|
||
.END
|
||
|