smashtv/ENDWAVE.ASM

1637 lines
28 KiB
NASM
Raw Permalink Blame History

This file contains invisible Unicode characters!

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

.FILE 'ENDWAVE.ASM'
.TITLE 'ROBO-RAMA GAME END WAVE CODE'
.WIDTH 132
.OPTION B,D,L,T
.MNOLIST
;
; INITIATED: APRIL 13,1989
; MODIFIED: !
; SOFTWARE: MARK TURMELL
;
; COPYRIGHT (C) 1989 WILLIAMS ELECTRONICS GAMES, INC.
;
;
; GET THE SYSTEM STUFF
.INCLUDE "MPROC.EQU" ;MPROC EQUATES
.INCLUDE "DISP.EQU" ;DISPLAY PROC. EQUATES
.INCLUDE "\VIDEO\SYS\SYS.INC" ;Z UNIT SYSTEM EQUATES
.INCLUDE "\VIDEO\SYS\MACROS.HDR" ;MACROS DEFINITIONS
.INCLUDE "IMGTBL.GLO"
.INCLUDE "ROBO.EQU"
;
;SOUNDS
;
.REF CROWD1,LEGOSND,CROWD1A,EXP3HI
;
;SYMBOLS EXTERNALLY DEFINED
;
.REF CLNPAL
.REF SET_GATE_2,CIRCUIT,FLYSLUP,STATUS,CNTDIG1,CNTDIG2,PLYRPRCS
.REF EHALT,SET_WAVE,BEGINOBJ,STRT_CHSR,BEGINOBJ2,CMP_LIT,LAZ_LIT
.REF KP_TS,KP_LS,KP_RS,WAVE,GAMSTATE,OVERLORD,KILL_TK,BAD0
.REF SHK_ON,CANT,BLOW,ARW_LIT
.REF PLYROBJS,SCRL,PCTOT,PZON,DIOFF,ENDON,DOMNTR,DO_BND
.REF P1DATA,P2DATA
;
;SYMBOLS DEFINED IN THIS FILE
;
.DEF DEXIT,FROMDR,DOCHS,BLDOFF,WNTOUT,CHEERS,FIXBUG
;
;EQUATES FIRST ORIGINATED IN THIS FILE
;
;
RGTX .EQU [228,0]
RGTX1 .EQU [228-1,0]
LFTX .EQU [50,0]
TOPX: .EQU [186,0]
BOTX: .EQU [186,0]
BOTX1: .EQU [186-1,0]
;
RGTX2 .EQU [228-1,0]
LFTX2 .EQU [50-1,0]
TOPX2: .EQU [186-1,0]
BOTX2: .EQU [186-1,0]
;
RGTY: .EQU [131,0]
RGTY1: .EQU [131+3,0]
LFTY: .EQU [131,0]
TOPY: .EQU [117,0]
BOTY: .EQU [168,0]
BOTY1: .EQU [168+3,0]
;
RGTY2: .EQU [131+5,0]
LFTY2: .EQU [131+5,0]
TOPY2: .EQU [117+5,0]
BOTY2: .EQU [168+5,0]
;
RGTARWF .EQU DMAWNZ+M_FLIPH
LFTARWF .EQU DMAWNZ
TOPARWF .EQU DMAWNZ
BOTARWF .EQU DMAWNZ+M_FLIPV
;
;UNINITIALIZED RAM DEFINITIONS
;
.BSS WNTOUT,8
.BSS PLY1IN,16
.BSS PLY2IN,16
.BSS ARWX1,32
.BSS ARWX2,32
.BSS ARWX3,32
.BSS ARWY1,32
.BSS ARWY2,32
.BSS ARWY3,32
.BSS ARWF1,16
.BSS ARWF2,16
.BSS ARWF3,16
.BSS ARWI1,32
.BSS ARWI2,32
.BSS ARWI3,32
.BSS FROMDR,16
.BSS ARNUM,8
DELYMN
SLEEP 3*60
CREATE TVPID,DOMNTR
DIE
BLDOFF
;TELL ALL SPINNING BLADES TO TAKE A HIKE
MMTM SP,A0,A2,A3,A7,A8
MOVK 6,A3 ;MAX # OF BLADES ;15
MOVI DUM_ID,A2
MOVI FLYSLUP,A7
NT:
CLR A1
NOT A1
MOVI CHNSWPID,A0
CALLA EXISTP
JRZ NX
;FOUND BLADE PROC
CALLA PUTA7
MOVE A2,*A0(PROCID)
NX DSJS A3,NT
MMFM SP,A0,A2,A3,A7,A8
RETS
;
DRW_ARW:
;ANALYZE WHICH ARROWS SHOULD BE DRAWN
;BASED ON CIRCUIT THEN BASED ON WAVE # WITHIN THAT CIRCUIT!
CLR A0
MOVE A0,@ARWX1,L
MOVE A0,@ARWX2,L
MOVE A0,@ARWX3,L
MOVE @CIRCUIT,A0
SLL 5,A0
ADDI CIRCTBL,A0
MOVE *A0,A0,L ;GET CIRCUIT INFO BASE ADDRESS
MOVE A0,A4 ;KEEP BASE IN A4
CLR A3 ;WAVE CNTR
MOVE @WAVE,A2 ;WAVE WITHIN THIS CIRCUIT
DEC A2
;A0=BASE=WAVE 1 X LIST!
MOVE A2,A2 ;1ST WAVE?
JREQ GOTIT
Q1 MOVE *A0+,A1,L
JRNE Q1
;A0=NEXT WAVE
INC A3
CMP A3,A2 ;REACHED CORRECT WAVE?
JRNE Q1
;
GOTIT:
;POINTING AT X ARROW LIST FOR THIS WAVE
MOVE *A0+,A1,L
MOVE A1,@ARWX1,L
MOVE *A0+,A1,L
JREQ DONEX
MOVE A1,@ARWX2,L
MOVE *A0,A1,L
MOVE A1,@ARWX3,L
;
DONEX:
MOVE A4,A0 ;A4=BASE OF X LIST
;A0=BASE=WAVE 1 X LIST!
Q2 MOVE *A0+,A1,L
JRNE Q2
;A0=NEXT WAVE
MOVE *A0,A1,L
JRNE Q2
;A0 NOW PNTS TO BEGINNING OF Y LIST
ADDI 32,A0
MOVE A0,A4
MOVE A2,A2 ;1ST WAVE?
JREQ GOTY
CLR A3
Q3 MOVE *A0+,A1,L
JRNE Q3
;A0=NEXT WAVE
INC A3
CMP A3,A2 ;REACHED CORRECT WAVE?
JRNE Q3
;
GOTY:
;POINTING AT Y ARROW LIST FOR THIS WAVE
MOVE *A0+,A1,L
MOVE A1,@ARWY1,L
MOVE *A0+,A1,L
JREQ DONEY
MOVE A1,@ARWY2,L
MOVE *A0,A1,L
MOVE A1,@ARWY3,L
;
DONEY:
MOVE A4,A0 ;A4=BASE OF Y LIST
;A0=BASE=WAVE 1 Y LIST!
Q4 MOVE *A0+,A1,L
JRNE Q4
;A0=NEXT WAVE
MOVE *A0,A1,L
JRNE Q4
;A0 NOW PNTS TO BEGINNING OF FLAGS LIST
;
ADDI 32,A0
MOVE A0,A4
MOVE A2,A2 ;1ST WAVE?
JREQ GOTF
CLR A3
Q5 MOVE *A0+,A1,W
JRNE Q5
;A0=NEXT WAVE
INC A3
CMP A3,A2 ;REACHED CORRECT WAVE?
JRNE Q5
;
GOTF:
;POINTING AT F ARROW LIST FOR THIS WAVE
MOVE *A0+,A1,W
MOVE A1,@ARWF1,W
MOVE *A0+,A1,W
JREQ DONEF
MOVE A1,@ARWF2,W
MOVE *A0,A1,W
MOVE A1,@ARWF3,W
;
DONEF:
MOVE A4,A0 ;A4=BASE OF F LIST
;A0=BASE=WAVE 1 IMG LIST!
Q6 MOVE *A0+,A1,W
JRNE Q6
;A0=NEXT WAVE
MOVE *A0,A1,W
JRNE Q6
;A0 NOW PNTS TO BEGINNING OF IMG LIST
;
ADDI 16,A0
MOVE A0,A4
MOVE A2,A2 ;1ST WAVE?
JREQ GOTI
CLR A3
Q7 MOVE *A0+,A1,L
JRNE Q7
;A0=NEXT WAVE
INC A3
CMP A3,A2 ;REACHED CORRECT WAVE?
JRNE Q7
;
GOTI:
;POINTING AT I ARROW LIST FOR THIS WAVE
MOVE *A0+,A1,L
MOVE A1,@ARWI1,L
MOVE *A0+,A1,L
JREQ DONEI
MOVE A1,@ARWI2,L
MOVE *A0,A1,L
MOVE A1,@ARWI3,L
;
DONEI:
MOVK 2,A5
DTOP:
PUSH A5
SLL 5,A5
MOVI ARWX1,A1
ADD A5,A1
MOVE *A1,A0,L ;X
JREQ NXT
MOVI ARWY1,A1
ADD A5,A1
MOVE *A1,A1,L ;Y
MOVI ARWF1,A3
SRL 1,A5
ADD A5,A3
MOVE *A3,A4,W ;FLAGS
MOVI ARWI1,A3
SLL 1,A5
ADD A5,A3
MOVE *A3,A2,L ;IMG
MOVI 65,A3
MOVI CLSNEUT|TYPNEUT|SUBARW,A5
CLR A6
CLR A7
CALLA BEGINOBJ
NXT PULL A5
DEC A5
JRNN DTOP
RETS
;EACH CIRCUIT HAS DIFFERENT ARROW TABLES!
CIRCTBL .LONG CIRC1,CIRC2,CIRC3
;
CIRC1:
;
;CIRCUIT 1 ARROW TABLE:
;
;ARX:
.LONG RGTX,0 ;WAVE 1
.LONG TOPX,BOTX,0 ;WAVE 2 (2 ARROWS)
.LONG RGTX,0
.LONG RGTX,BOTX,0
.LONG BOTX1,0 ;WAVE 5
.LONG RGTX,0
.LONG TOPX,0
.LONG RGTX,0 ;WAVE 8 OF CIRCUIT 1
.LONG RGTX,0 ;WAVE 9
.LONG RGTX,0 ;WAVE 10
.LONG 0
;ARY:
.LONG RGTY,0 ;WAVE 1
.LONG TOPY,BOTY,0 ;WAVE 2 (2 ARROWS)
.LONG RGTY,0
.LONG RGTY,BOTY,0
.LONG BOTY1,0 ;WAVE 5
.LONG RGTY,0
.LONG TOPY,0
.LONG RGTY,0
.LONG RGTY,0 ;9
.LONG RGTY,0 ;10
.LONG 0
;ARF:
.WORD RGTARWF,0 ;WAVE 1
.WORD TOPARWF,BOTARWF,0 ;WAVE 2 (2 ARROWS)
.WORD RGTARWF,0
.WORD RGTARWF,BOTARWF,0
.WORD BOTARWF,0 ;WAVE 5
.WORD RGTARWF,0
.WORD TOPARWF,0
.WORD RGTARWF,0
.WORD RGTARWF,0 ;9
.WORD RGTARWF,0 ;10
.WORD 0
;ARI:
.LONG ARROW9,0 ;WAVE 1
.LONG ARROW12,ARROW12,0 ;WAVE 2 (2 ARROWS)
.LONG ARROW9,0
.LONG ARROW9,ARROW12,0
.LONG ARROW12,0 ;WAVE 5
.LONG ARROW9,0
.LONG ARROW12,0
.LONG ARROW9,0 ;8
.LONG ARROW9,0 ;9
.LONG ARROW9,0 ;10
.LONG 0
;
;CIRCUIT 2 ARROW TABLE:
;
CIRC2:
;
;ARX:
.LONG RGTX2,TOPX2,BOTX2,0 ;WAVE 1
;SHOW VERSION
; .LONG BOTX2,0 ;WAVE 1
.LONG RGTX2,TOPX2,BOTX2,0 ;WAVE 2 (3 ARROWS)
.LONG TOPX2,BOTX2,0
.LONG TOPX2,0
.LONG BOTX2,0 ;WAVE 5
.LONG RGTX2,0
.LONG RGTX2,0 ;WAVE 7-TVSET ARENA
.LONG RGTX2,0 ;WAVE 8 OF CIRCUIT 1
.LONG RGTX2,0 ;WAVE 9
.LONG RGTX2,0 ;WAVE 10 (NON EX2ISTENT!)
.LONG RGTX2,0 ;WAVE
.LONG BOTX1,0 ;WAVE
.LONG RGTX2,0 ;WAVE
.LONG RGTX1,0 ;WAVE ;14
.LONG BOTX2,0 ;WAVE
.LONG TOPX2,0 ;WAVE
.LONG RGTX2,0 ;WAVE
.LONG TOPX2,0 ;WAVE
.LONG 0
;ARY:
.LONG RGTY2,TOPY2,BOTY2,0 ;WAVE 1
;SHOW VERSION
; .LONG BOTY2,0 ;WAVE 1
.LONG RGTY2,TOPY2,BOTY2,0 ;WAVE 2 (2 ARROWS)
.LONG TOPY2,BOTY2,0
.LONG TOPY2,0
.LONG BOTY2,0 ;WAVE 5
.LONG RGTY2,0
.LONG RGTY2,0
.LONG RGTY2,0
.LONG RGTY2,0 ;9
.LONG RGTY2,0 ;10
.LONG RGTY2,0
.LONG BOTY1,0
.LONG RGTY2,0
.LONG RGTY1,0
.LONG BOTY2,0 ;15
.LONG TOPY2,0
.LONG RGTY2,0
.LONG TOPY2,0
.LONG 0
;ARF:
.WORD RGTARWF,TOPARWF,BOTARWF,0 ;WAVE 1 (2 ARROWS)
;SHOW VERSION
; .WORD BOTARWF,0 ;WAVE 1 (2 ARROWS)
.WORD RGTARWF,TOPARWF,BOTARWF,0 ;WAVE 2 (2 ARROWS)
.WORD TOPARWF,BOTARWF,0
.WORD TOPARWF,0
.WORD BOTARWF,0 ;WAVE 5
.WORD RGTARWF,0
.WORD RGTARWF,0 ;7
.WORD RGTARWF,0
.WORD RGTARWF,0 ;9
.WORD RGTARWF,0 ;10
.WORD RGTARWF,0
.WORD BOTARWF,0
.WORD RGTARWF,0 ;13
.WORD RGTARWF,0 ;14
.WORD BOTARWF,0
.WORD TOPARWF,0
.WORD RGTARWF,0
.WORD TOPARWF,0
.WORD 0
;ARI:
.LONG ARROW9,ARROW12,ARROW12,0 ;WAVE 1
;SHOW VERSION
; .LONG ARROW12,0 ;WAVE 1
.LONG ARROW9,ARROW12,ARROW12,0 ;WAVE 2 (2 ARROWS)
.LONG ARROW12,ARROW12,0
.LONG ARROW12,0
.LONG ARROW12,0 ;WAVE 5
.LONG ARROW9,0
.LONG ARROW9,0 ;7
.LONG ARROW9,0 ;8
.LONG ARROW9,0 ;9
.LONG ARROW9,0 ;10
.LONG ARROW9,0
.LONG ARROW12,0
.LONG ARROW9,0
.LONG ARROW9,0
.LONG ARROW12,0 ;15
.LONG ARROW12,0
.LONG ARROW9,0
.LONG ARROW12,0
.LONG 0
;
;CIRCUIT 3 ARROW TABLE:
CIRC3:
;
;ARX:
.LONG RGTX2,TOPX2,BOTX2,0 ;WAVE 1
.LONG RGTX2,TOPX2,BOTX2,0 ;WAVE 2 (3 ARROWS)
.LONG TOPX2,BOTX2,0
.LONG TOPX2,0
.LONG BOTX2,0 ;WAVE 5
.LONG RGTX2,0
.LONG RGTX2,0 ;WAVE 7-TVSET ARENA
.LONG RGTX2,0 ;WAVE 8 OF CIRCUIT 1
.LONG RGTX2,0 ;WAVE 9
.LONG RGTX2,0 ;WAVE 10 (NON EX2ISTENT!)
.LONG RGTX2,0 ;WAVE
.LONG BOTX1,0 ;WAVE
.LONG RGTX2,0 ;WAVE
.LONG RGTX1,0 ;WAVE ;14
.LONG BOTX2,0 ;WAVE
.LONG TOPX2,0 ;WAVE
.LONG RGTX2,0 ;WAVE
.LONG TOPX2,0 ;WAVE ;18
.LONG RGTX2,0 ;WAVE ;19
.LONG RGTX2,0 ;WAVE ;20
.LONG RGTX2,0 ;WAVE ;21-TVSET ARENA
.LONG 0
;ARY:
.LONG RGTY2,TOPY2,BOTY2,0 ;WAVE 1
.LONG RGTY2,TOPY2,BOTY2,0 ;WAVE 2 (2 ARROWS)
.LONG TOPY2,BOTY2,0
.LONG TOPY2,0
.LONG BOTY2,0 ;WAVE 5
.LONG RGTY2,0
.LONG RGTY2,0
.LONG RGTY2,0
.LONG RGTY2,0 ;9
.LONG RGTY2,0 ;10
.LONG RGTY2,0
.LONG BOTY1,0
.LONG RGTY2,0
.LONG RGTY1,0
.LONG BOTY2,0 ;15
.LONG TOPY2,0
.LONG RGTY2,0
.LONG TOPY2,0
.LONG RGTY2,0 ;WAVE ;19
.LONG RGTY2,0 ;WAVE ;20
.LONG RGTY2,0 ;WAVE ;21-TVSET ARENA
.LONG 0
;ARF:
.WORD RGTARWF,TOPARWF,BOTARWF,0 ;WAVE 1 (2 ARROWS)
.WORD RGTARWF,TOPARWF,BOTARWF,0 ;WAVE 2 (2 ARROWS)
.WORD TOPARWF,BOTARWF,0
.WORD TOPARWF,0
.WORD BOTARWF,0 ;WAVE 5
.WORD RGTARWF,0
.WORD RGTARWF,0 ;7
.WORD RGTARWF,0
.WORD RGTARWF,0 ;9
.WORD RGTARWF,0 ;10
.WORD RGTARWF,0
.WORD BOTARWF,0
.WORD RGTARWF,0 ;13
.WORD RGTARWF,0 ;14
.WORD BOTARWF,0
.WORD TOPARWF,0
.WORD RGTARWF,0
.WORD TOPARWF,0 ;18
.WORD RGTARWF,0 ;19
.WORD RGTARWF,0 ;20
.WORD RGTARWF,0 ;21
.WORD 0
;ARI:
.LONG ARROW9,ARROW12,ARROW12,0 ;WAVE 1
.LONG ARROW9,ARROW12,ARROW12,0 ;WAVE 2 (2 ARROWS)
.LONG ARROW12,ARROW12,0
.LONG ARROW12,0
.LONG ARROW12,0 ;WAVE 5
.LONG ARROW9,0
.LONG ARROW9,0 ;7
.LONG ARROW9,0 ;8
.LONG ARROW9,0 ;9
.LONG ARROW9,0 ;10
.LONG ARROW9,0
.LONG ARROW12,0
.LONG ARROW9,0
.LONG ARROW9,0
.LONG ARROW12,0 ;15
.LONG ARROW12,0
.LONG ARROW9,0
.LONG ARROW12,0 ;18
.LONG ARROW9,0 ;19
.LONG ARROW9,0 ;20
.LONG ARROW9,0 ;21
.LONG 0
DOCHS:
MOVE @CIRCUIT,A0
CMPI 2,A0
JRZ DOG1
SLEEP 60*9 ;TIME BEFORE CHASERS COME OUT
DOG1 SLEEP 2*60+90
MOVE @STATUS,A0
CMPI 3,A0
JREQ DOC1
CMPI 2,A0
JREQ DOC2
CLR A9
CREATE 0,STRT_CHSR
DIE
DOC2 MOVK 32,A9
CREATE 0,STRT_CHSR
DIE
DOC1 ;BOTH PLAYERS PRESENT
CLR A9
CREATE 0,STRT_CHSR
MOVK 32,A9
CREATE 0,STRT_CHSR
DIE
RESETPZ SLEEP 3*60
CLR A0
MOVB A0,@PZON
DIE
KILIC SLEEP 60*10
CLR A1
NOT A1
MOVI ICONPID,A0 ;KILL ICON DISPATCHER
CALLA KILALL
MOVI CSHPID,A0 ;KILL ICON DISPATCHER
CALLA KILALL
DIE
FIXBUG
;GET CURRENT PLAYER SCORES
;SLEEP 20 SECONDS
;GET NEW PLAYER SCORES
;IF SAME, NOBODY HAS SCORED! WE MAY HAVE AN INVISIBLE ENEMY, SO GO TO SMART
;BOMB CODE.
;IF NOT SAME, STORE THOSE SCORES AWAY AS CURRENT AND SLEEP ANOTHER 20 SECONDS!
MOVI P1DATA,A0
MOVE *A0(PSCORE),A8,L
MOVI P2DATA,A0
MOVE *A0(PSCORE),A9,L
SLEEP 20*60
MOVI P1DATA,A0
MOVE *A0(PSCORE),A1,L
MOVI P2DATA,A0
MOVE *A0(PSCORE),A2,L
CMP A1,A8
JRNZ FIXBUG
CMP A2,A9
JRNZ FIXBUG
;NEITHER PLAYER HAS SCORED IN 20 SECONDS!
;SMART BOMB SCREEN!
CREATE 0,BAD0 ;SMART BOMB AND GET RID OF EVERYONE!
MOVI EXP3HI,A0
CALLA ONESND
JRUC FIXBUG
DEXIT:
; CHECK TO SEE IF PLAYER IS UP AGAINST CORRECT GATE
; IF SO, START SCRIPT TO SCROLL PLAYER TO NEXT ARENA
SLEEP 60*2
; CREATE FIXIT,FIXBUG
;PLACED HERE 4/11/90
CLR A1
NOT A1
MOVI COBPID,A0
CALLA KILALL
MOVI COBPIDA,A0
CALLA KILALL
MOVI COBPIDM,A0
CALLA KILALL
MOVI COBPIDS,A0
CALLA KILALL
MOVI LORDPID,A0
CALLA KILALL
SLEEP 10
CREATE ARWPID,KILIC
MOVE @GAMSTATE,A0
CMPI INAMODE,A0
JRZ NOSCRLL ;NO SCROLL ON IN DEMO AT ALL!
DX2:
;CHECK FOR PRIZES IN TV ETC.
MOVB @PZON,A0
JRZ GO1
;PZON SET
MOVI BUNK,A0
CLR A1
NOT A1
CALLA EXISTP
JRNZ DX22
;RESET PZON FLAG AFTER A FEW SECONDS!
CREATE BUNK,RESETPZ
JRUC DX22
; MOVI CSHPID,A0
; CLR A1
; NOT A1
; CALLA EXISTP
; JRNZ DX22
;CASH NOT BEING LAYED OUT!
GO1
MOVI CLSENMY,A0
MOVI 0C000H,A1
CALLA EXISTOBJ
JRZ DN
MOVE @CIRCUIT,A0
CMPI 2,A0
JRNZ DX22
MOVE @WAVE,A0
CMPI 7,A0
JRZ DN
DX22
SLEEP 1
JRUC DX2
DN
CLR A1
NOT A1
MOVI CLSNEUT|TYPWLMN,A0
CALLA EXISTOBJ
JRZ DN0
CLR A1
MOVE A1,*A0(OID) ;CHANGE ITS OID
MOVE *A0(OPLINK),A0,L
MOVK 3,A1
MOVE A1,*A0(PTIME)
MOVI DIOFF,A7
CALLA PUTA7
JRUC DN
DN0
MOVI CLSNEUT|TYPTANK,A0
MOVI 0FFFFH,A1
CALLA EXISTOBJ
JRZ BAD4
;FOUND A TANK BOTTOM
MOVE A0,A8
;WHO GETS SCORE HERE?
CALLA KILL_TK
JRUC DN0
BAD4
SLEEP 1
MOVB @SHK_ON,A0
JRNZ BAD4
MOVE @WAVE,A0
CMPI 1,A0
JRNZ U8
MOVE @CIRCUIT,A9
ADDI 4,A9
CREATE 0,DELYMN
SLEEP 6*60
JRUC U9
U8
CREATE ARWPID,DOCHS ;START CHASER AFTER A TIME!
U9
CLR A1
NOT A1
MOVI FIXIT,A0
CALLA KILALL
CREATE CYCPID,CMP_LIT
CALLR DRW_ARW ;ARWS
CREATE CYCPID,ARW_LIT
CREATE ARWPID,GOFORIT ;ARROW PID GETS KILLED FER SURE
;NOW CHECK TO SEE IF PLAYER IS IN MAGIC BOX (IE. FRONT OF PROPER GATE!)
;START SCROLL TO NEXT WAVE AFTER THIS!
;OPEN PROPER GATE
;KILL OVERLORD PROCESS (WE ARE IN OVERLORD NOW!)
CLR A1
MOVB A1,@SCRL
; CLR A1
; NOT A1
; MOVI LORDPID,A0
; CALLA KILALL
SLEEP 25
DN3 SLEEP 1
MOVB @KP_LS,A0 ;MAKE SURE NO DOOR IS CLOSING WHEN WE
;TRY TO OPEN CORRECT DOOR AT EXIT TIME.
CMPI 1,A0
JREQ DN3
MOVB @KP_RS,A0
CMPI 1,A0
JREQ DN3
MOVB @KP_TS,A0
CMPI 1,A0
JREQ DN3
MOVE @CIRCUIT,A0
SLL 5,A0
ADDI CIRC3TBL,A0
MOVE *A0,A0,L
MOVE @WAVE,A1
TR2 DEC A1
JREQ TR3
ADDI 48,A0
JRUC TR2
TR3:
MOVE A0,A1
;GET LIST OF THREE DOORS TO OPEN
MOVE *A1+,A0,W
MOVE *A1+,A5,W
MOVE *A1+,A6,W
MOVE A0,A9
CREATE 0,EXITSGN
MOVE A9,A0
CLR A1
NOT A1 ;INFINITE DELAY
CALLA SET_GATE_2
MOVE A5,A0
JREQ DN2
MOVE A0,A9
CREATE 0,EXITSGN
MOVE A9,A0
CLR A1
NOT A1
CALLA SET_GATE_2
MOVE A6,A0
JREQ DN2
MOVE A0,A9
CREATE 0,EXITSGN
MOVE A9,A0
CLR A1
NOT A1
CALLA SET_GATE_2
DN2:
;CHECK BOTH PLAYERS!
MOVE @PLYROBJS,A8,L
MOVE @PLYROBJS+32,A9,L
AF2 MOVE @CIRCUIT,A0
SLL 5,A0
ADDI CIRC2TBL,A0
MOVE *A0,A0,L
MOVE @WAVE,A1
TR: DEC A1
JREQ TX
ADDI 192+192,A0 ;A1 PNTS TO LIST OF MAGIC BOXES FOR WAVE
JRUC TR
TX:
CLR A5
CLR A6
MOVE A0,A1
MOVE *A1,A2,L ;ENTRY 1
ADDI 96,A1
MOVE *A1,A3,L
INC A5
INC A6
CALLR CK2
JRNC T6
CALLR READY2
JRC REDREG
T6 CALLR CK1
JRNC T7
CALLR READY1
JRC REDREG
T7
MOVE A0,A1
ADDI 32,A1
MOVE *A1,A2,L ;ENTRY 2
ADDI 96,A1
MOVE *A1,A3,L
INC A5
INC A6
CALLR CK2
JRNC T8
CALLR READY2
JRC REDREG
T8 CALLR CK1
JRNC T9
CALLR READY1
JRC REDREG
T9 MOVE A0,A1
ADDI 64,A1
MOVE *A1,A2,L ;ENTRY 3
ADDI 96,A1
MOVE *A1,A3,L
INC A5
INC A6
CALLR CK2
JRNC T10
CALLR READY2
JRC REDREG
T10 CALLR CK1
JRNC T11
CALLR READY1
JRC REDREG
T11
;MAKE POWERUPS TAKE A HIKE (BLADES ONLY AT THIS POINT?
* Z BIT CLR = MATCH, A0 = PTR TO PROCESS
CLR A6
MOVE A6,@PLY2IN
CALLA BLDOFF
SLEEP 1
JRUC DN2
EXITSGN
;A9=DOOR #
;1=DOOR LEFT
;2=RGT,3=TOP,4=BOTM
DEC A9
SLL 5,A9
MOVI EXX,A0
ADD A9,A0
MOVE *A0,A0,L
ADDI EXY,A9
MOVE *A9,A1,L
MOVI DMAWNZ,A4,W ;FLAGS
MOVI EXIT,A2 ;IMG
MOVI 65,A3
MOVI CLSNEUT|TYPNEUT|SUBARW,A5
CLR A6
CLR A7
CALLA BEGINOBJ
DIE
EXX .LONG 01E0000H,01580000H,0BD0000H,0BD0000H
EXY .LONG 0920000H,08C0000H,0280000H,0E50000H
CK2: ;PLAYER 2 IS IN A9
MOVE A9,A9
JREQ RTS
MMTM SP,A0,A1
MOVE *A9(OXVAL),A0,L
MOVE *A9(OYVAL),A1,L
JRUC CF
CK1: ;PLAYER 1 IS IN A8
MOVE A8,A8
JREQ RTS
MMTM SP,A0,A1
MOVE *A8(OXVAL),A0,L
MOVE *A8(OYVAL),A1,L
CF SRL 16,A0
MOVX A0,A1
MOVE @WORLDTL,A0,L
SUBXY A0,A1
;A1=Y,X OF PLAYER WITH WORLD YX TAKEN OUT
CMPXY A1,A2
JRXGT NO
CMPXY A1,A3
JRXLT NO
;X IS WITHIN MAGIC BOX
JRYLT NO
CMPXY A1,A2
JRYGT NO
;A HIT
MMFM SP,A0,A1
SETC
RETS
NO
MMFM SP,A0,A1
RTS CLRC
RETS
READY2:
MOVB @CNTDIG1,A4
MOVB @CNTDIG2,A7
OR A4,A7
JRNZ RY2
MOVE @STATUS,A4
CMPI 3,A4
JRNE SETR1
RY2
MOVE A6,@PLY2IN
CLRC
RETS
READY1:
MOVB @CNTDIG1,A4
MOVB @CNTDIG2,A7
OR A4,A7
JRNZ RY1
MOVE @STATUS,A4
CMPI 3,A4
JRNE SETR1
RY1
;SOMEONE HAS ENTERED A DOOR
;IF 2 PLYRS, CLOSE OTHER DOORS
;THEN SCROLL FIRST PLAYER OUT, AND WAIT FOR OTHER PLAYER TO ALSO ENTER
;THEN START SCROLL
;READY TO START SCROLL
MOVE A5,@PLY1IN
MOVE @PLY2IN,A7
CMP A5,A7
JREQ SETR1
CLR A4
MOVE A4,@PLY1IN
CLRC
RETS
NOSETP MOVK 1,A0
MOVB A0,@WNTOUT
NOSET
CLR A4
MOVE A4,@PLY1IN
MOVE A4,@PLY2IN
CLRC
RETS
SETR1
;IF SCRIPTPLAY EXISTS, DO NOT ALLOW AN EXIT
;IF PCTOT IS NOT 0 THEN NO EXIT, CHUNKS COULD BE KILLED BY SCROLLING!
PUSH A1
CLR A1
NOT A1
MOVI CLSNEUT|TYPNEUT|SUBCHNK,A0
CALLA EXISTOBJ
PULL A1
JRNZ NOSET
MOVB @SHK_ON,A0 ;SCREEN IS SHAKING!
JRNZ NOSET
; MOVB @PZON,A0
; JRNZ NOSETP ;PRIZE STILL FLASHING
MOVI FLYPID,A0 ;CASH/PRIZE FLYING TOWARD MONITOR
PUSH A1
CLR A1
NOT A1
CALLA EXISTP
PULL A1
JRNZ NOSETP
MOVI SCRPID,A0 ;SCRIPTPLAY IN ACTION STILL!
PUSH A1
CLR A1
NOT A1
CALLA EXISTP
PULL A1
JRNZ NOSET
MOVB @CNTDIG1,A4
MOVB @CNTDIG2,A7
OR A4,A7
JRNZ TAG9
;FIX PLYRPRCS BUG! PUT INTO A PROCESS BY ITSELF?
MOVE @STATUS,A7
CMPI 3,A7
JRZ TAG9
CMPI 1,A7
JRNZ TAG9A
CLR A7
MOVE A7,@PLYRPRCS+32,L
JRUC TAG9
TAG9A CLR A7
MOVE A7,@PLYRPRCS,L
TAG9
MOVE @PLYRPRCS,A0,L
JRZ TU
MOVE *A0(DEAD),A0
JRNZ NOSET
TU MOVE @PLYRPRCS+32,A0,L
JRZ TU2
MOVE *A0(DEAD),A0
JRNZ NOSET
TU2 SETC
RETS
REDREG ADDI 96,A1
MOVE *A1,A0
MOVE A0,@WAVE
ADDI 96,A1
MOVE *A1,A0
MOVE A0,@FROMDR
CMPI 1,A0
JRNE X1
CALLR KT
CALLR KR
JRUC X4
X1 CMPI 2,A0
JRNE X2
CALLR KL
CALLR KT
JRUC X4
X2 CMPI 3,A0
JRNE X3
CREATE CYCPID,LAZ_LIT ;LAZER LINES!
CALLR KL
CALLR KR
JRUC X4
X3
;GOING THROUGH BOTTOM DR
CREATE CYCPID,LAZ_LIT ;LAZER LINES!
CALLR KT
CALLR KL
CALLR KR
X4
MOVK 1,A1
MOVB A1,@SCRL
MOVB A1,@CANT
CLR A0
MOVB A0,@WNTOUT
CALLR STOPPLYR
SLEEP 1 ;3
;CLEAN UP ALL CHASER PROCS/IMAGES
MOVI ARWPID,A0
CLR A1
NOT A1
CALLA KILALL ;KILL ARROW PROCESS
MOVI COLPID,A0
CALLA KILALL ;KILL COLLISION PROC
;KILL CHASER PCS PROC
MOVI CHSRPID,A0
CLR A1
NOT A1
CALLA KILALL ;KILL CHASER SNAKE PCS
;KILL CHASER KILL OFF PROC (AFTER IT HAS HIT PLAYERS IS SLEEPS A BIT)
MOVI KCHAS,A0
CLR A1
NOT A1
CALLA KILALL ;KILL CHASER SNAKE PCS
J0
;NEED TO KILL CHASER IMAGES HERE ALSO?
CLR A1
NOT A1
MOVI CLSNEUT|TYPCHSR,A0
CALLA EXISTOBJ
JRZ J1
;A0=IMAGE OF CHASER
CLR A2
MOVE A2,*A8(OXVEL),L
MOVE A2,*A8(OYVEL),L
MOVI >222,A2
MOVE A2,*A0(OID),W
MOVE A0,A8
CREATE 0,BLOW
MOVI EXP3HI,A0
CALLA ONESND
JRUC J0
STOPPLYR
MOVE @PLYRPRCS,A1,L
JRZ NEXT1
MOVE *A1(TSO_PTR),A5,L
MOVE *A1(LEG2_PTR),A1,L
MOVE A0,*A5(OXVEL),L
MOVE A0,*A5(OYVEL),L
MOVE A0,*A1(OXVEL),L
MOVE A0,*A1(OYVEL),L
NEXT1 MOVE @PLYRPRCS+32,A1,L
JRZ NEXT2
MOVE *A1(TSO_PTR),A5,L
MOVE *A1(LEG2_PTR),A1,L
MOVE A0,*A5(OXVEL),L
MOVE A0,*A5(OYVEL),L
MOVE A0,*A1(OXVEL),L
MOVE A0,*A1(OYVEL),L
NEXT2 RETS
J1:
SLEEP 2
CALLR STOPPLYR
MOVI CHSR2PID,A0 ;KILL SECOND ROUND OF CHASER
CLR A1
NOT A1
CALLA KILALL
CLR A0
MOVE @PLYRPRCS,A1,L
JRZ RPZ
MOVE *A1(LEG_PRC),A1,L
MOVE *A1(SHOECNT),A2
MOVE A2,*A1(SVSHO)
MOVE A0,*A1(SHOECNT)
;
RPZ MOVE @PLYRPRCS+32,A1,L
JRZ RP2
MOVE *A1(LEG_PRC),A1,L
MOVE *A1(SHOECNT),A2
MOVE A2,*A1(SVSHO)
MOVE A0,*A1(SHOECNT)
RP2
CLR A0
MOVB A0,@ENDON
; CREATE 0,CHEERS
MOVI CROWD1A,A0
CALLA ONESND
;KILL TVMNTR ON SCREEN (MAP)
CLR A1
NOT A1
MOVI TV2PID,A0
CALLA KILALL
; CLR A1
; NOT A1
MOVI TVPID,A0
CALLA KILALL
CALLR KILEM
SLEEP 1
CALLR STOPPLYR
CALLR KILEM
NOMAM SLEEP 1
;CHECK FOR SCRIPT ON!
CALLR STOPPLYR
MOVI SCRPID,A0 ;SCRIPTPLAY IN ACTION STILL!
CLR A1
NOT A1
CALLA EXISTP
JRNZ NOMAM
JSRP SET_WAVE ;ROBBI
CALLA CLNPAL
;KILL CHASER PCS PROC
MOVI CHSRPID,A0
CLR A1
NOT A1
CALLA KILALL ;KILL CHASER SNAKE PCS
;NEED TO KILL CHASER IMAGES HERE ALSO?
MOVI CLSENMY|TYPCHSR,A0
CALLA KILOBJ
;RECOVER OLD SHOE CNTS
MOVE @PLYRPRCS,A1,L
JRZ RP1
MOVE *A1(LEG_PRC),A1,L
MOVE *A1(SVSHO),A0
MOVE A0,*A1(SHOECNT)
;
RP1 MOVE @PLYRPRCS+32,A1,L
JRZ NOSCRLL
MOVE *A1(LEG_PRC),A1,L
MOVE *A1(SVSHO),A0
MOVE A0,*A1(SHOECNT)
NOSCRLL
DIE
KILEM
CLR A1
NOT A1
MOVI FATPID,A0
CALLA KILALL
MOVI CLSENMY|TYPFAT,A0
CALLA KILOBJ
MOVI GALPID,A0
CALLA KILALL
MOVI TYPGAL,A0
CALLA KILALL
MOVI CLSENMY|TYPGAL|SUBCHN,A0
CALLA KILOBJ
MOVI CSHPID,A0 ;KILL ICON DISPATCHER
CALLA KILALL
RETS
;DLSTM .LONG MNTR,MAPP,FIGCOL,PALSMSH,PALTV,BLODP,GALP,GALP2,ORANGE,PRZ
; .LONG 0
CHEERS
MOVI CROWD1,A0
CALLA ONESND
SLEEP 20
MOVI CROWD1,A0
CALLA ONESND
SLEEP 25
MOVI CROWD1,A0
CALLA ONESND
SLEEP 15
MOVI CROWD1,A0
CALLA ONESND
DIE
LEGS
MOVI LEGOSND,A0 ;LETS GO
CALLA ONESND
MOVE @STATUS,A0
CMPI 3,A0
JRNZ LO
SLEEP 02EH
MOVI LEGOSND,A0 ;LETS GO
CALLA ONESND
LO DIE
GOFORIT:
MOVI CROWD1,A0
CALLA ONESND
SLEEP 10
MOVI P1DATA,A9
MOVE @STATUS,A0
CMPI 2,A0
JRNZ PLO
MOVI P2DATA,A9
PLO
CREATE 0,BAD0 ;SMART BOMB AND GET RID OF EVERYONE!
SLEEP 50
CREATE TVPID,LEGS
CLR A1
NOT A1
MOVI ICONPID,A0 ;KILL ICON DISPATCHER
CALLA KILALL
MOVI CSHPID,A0 ;KILL ICON DISPATCHER
CALLA KILALL
MOVE @PLYRPRCS,A7,L
JRZ P1
CLR A0
MOVB A0,*A7(BNDTYP)
MOVB A0,*A7(PRVBND)
CALLA DO_BND
P1 MOVE @PLYRPRCS+32,A7,L
JRZ P2
CLR A0
MOVB A0,*A7(BNDTYP)
MOVB A0,*A7(PRVBND)
CALLA DO_BND
P2
DIE
KL MOVI DRLPID,A0
CLR A1
MOVE A1,@KP_LS
NOT A1
CALLA KILALL
RETS
KR MOVI DRRPID,A0
CLR A1
MOVE A1,@KP_RS
NOT A1
CALLA KILALL
RETS
KT
MOVI DRTOPID,A0
CLR A1
MOVE A1,@KP_TS
NOT A1
CALLA KILALL
RETS
CIRC3TBL:
.LONG CIRCD1,CIRCD2,CIRCD3
CIRCD1:
.WORD 2,0,0 ;WAVE 1 CIRCUIT 1 DOORS TO OPEN
.WORD 3,4,0
.WORD 2,0,0
.WORD 2,4,0
.WORD 4,0,0
.WORD 2,0,0
.WORD 3,0,0
.WORD 2,0,0 ;WAVE 8
.WORD 2,0,0 ;WAVE 9
.WORD 2,0,0 ;WAVE 10
CIRCD2:
.WORD 2,3,4 ;WAVE 1 CIRCUIT 1 DOORS TO OPEN
;SHOW VERSION
; .WORD 4,0,0 ;WAVE 1 CIRCUIT 1 DOORS TO OPEN
.WORD 2,3,4
.WORD 3,4,0
.WORD 3,0,0 ;4
.WORD 4,0,0
.WORD 2,0,0
.WORD 2,0,0
.WORD 2,0,0 ;WAVE 8
.WORD 2,0,0
.WORD 2,0,0 ;10!
.WORD 2,0,0
.WORD 4,0,0
.WORD 2,0,0
.WORD 2,0,0
.WORD 4,0,0
.WORD 3,0,0 ;16
.WORD 2,0,0
.WORD 3,0,0
CIRCD3:
.WORD 2,3,4 ;WAVE 1 CIRCUIT 1 DOORS TO OPEN
.WORD 2,3,4
.WORD 3,4,0
.WORD 3,0,0 ;4
.WORD 4,0,0
.WORD 2,0,0
.WORD 2,0,0
.WORD 2,0,0 ;WAVE 8
.WORD 2,0,0
.WORD 2,0,0 ;10!
.WORD 2,0,0
.WORD 4,0,0
.WORD 2,0,0
.WORD 2,0,0
.WORD 4,0,0
.WORD 3,0,0 ;16
.WORD 2,0,0
.WORD 3,0,0 ;18
.WORD 2,0,0 ;19
.WORD 2,0,0 ;20
.WORD 2,0,0 ;21
CIRC2TBL:
.LONG CIRCB1,CIRCB2,CIRCB3
;
CIRCB1:
;BOXES FOR CIRCUIT 1
;BXTL:
;UPPER LEFT BOX Y,X
.LONG [110,325],0,0 ;WAVE 1
.LONG [145,395],0,0 ;WAVE 1
.LONG 2,0,0 ;WHERE DOES IT GO
.LONG 2,0,0 ;FROM DOOR VARIABLE
.LONG [222,175],[05,175],0
.LONG [252,211],[55,211],0
.LONG 6,3,0
.LONG 4,3,0
.LONG [110,325],0,0
.LONG [145,395],0,0
.LONG 4,0,0
.LONG 2,0,0
.LONG [110,325],[222,175],0
.LONG [145,395],[252,211],0
.LONG 5,8,0
.LONG 2,4,0
.LONG [222,175],0,0 ;WAVE 5
.LONG [252,211],0,0
.LONG 9,0,0 ;9 = END TVSET WAVE
.LONG 4,0,0
.LONG [110,325],0,0
.LONG [145,395],0,0
.LONG 7,0,0
.LONG 2,0,0
.LONG [05,175],0,0 ;WAVE 7
.LONG [55,211],0,0
.LONG 8,0,0
.LONG 3,0,0
.LONG [110,325],0,0
.LONG [145,395],0,0 ;WAVE 8
.LONG 9,0,0
.LONG 2,0,0
.LONG [110,325],0,0
.LONG [145,395],0,0 ;WAVE 9
.LONG 10,0,0
.LONG 2,0,0
.LONG [110,325],0,0
.LONG [145,395],0,0 ;WAVE 10
.LONG 11,0,0
.LONG 2,0,0
; THESE ARE FOR ENTERING NEXT TVSET
CIRCB2:
;BOXES FOR CIRCUIT 2
;BXTL:
;UPPER LEFT BOX Y,X
.LONG [110,325],[05,175],[222,175] ;WAVE 1
.LONG [145,395],[55,211],[252,211] ;WAVE 1
.LONG 2,8,13 ;WHERE DOES IT GO
.LONG 2,3,4 ;FROM DOOR VARIABLE
;SHOW VERSION
; .LONG [222,175],0,0 ;WAVE 1
; .LONG [252,211],0,0 ;WAVE 1
; .LONG 13,0,0 ;WHERE DOES IT GO
; .LONG 4,0,0 ;FROM DOOR VARIABLE
.LONG [110,325],[05,175],[222,175] ;WAVE 2
.LONG [145,395],[55,211],[252,211] ;WAVE 2
.LONG 3,9,14
.LONG 2,3,4
.LONG [05,175],[222,175],0 ;3
.LONG [55,211],[252,211],0
.LONG 4,15,0
.LONG 3,4,0
.LONG [05,175],0,0 ;4
.LONG [55,211],0,0
.LONG 11,0,0
.LONG 3,0,0
.LONG [222,175],0,0 ;WAVE 5
.LONG [252,211],0,0
.LONG 6,0,0
.LONG 4,0,0
.LONG [110,325],0,0 ;6
.LONG [145,395],0,0
.LONG 7,0,0
.LONG 2,0,0
.LONG [110,325],0,0 ;WAVE 7
.LONG [145,395],0,0
.LONG 19,0,0 ;TO BONUS RACK UP SCREEN!
.LONG 2,0,0
.LONG [110,325],0,0
.LONG [145,395],0,0 ;WAVE 8
.LONG 9,0,0
.LONG 2,0,0
.LONG [110,325],0,0
.LONG [145,395],0,0 ;WAVE 9
.LONG 4,0,0
.LONG 2,0,0
.LONG [110,325],0,0 ;NON EXISTENT
.LONG [145,395],0,0 ;WAVE 10
.LONG 11,0,0
.LONG 2,0,0
.LONG [110,325],0,0
.LONG [145,395],0,0 ;WAVE 11
.LONG 12,0,0
.LONG 2,0,0
.LONG [222,175],0,0
.LONG [252,395],0,0 ;WAVE 12
.LONG 5,0,0
.LONG 4,0,0
.LONG [110,325],0,0
.LONG [145,395],0,0 ;WAVE 13
.LONG 14,0,0
.LONG 2,0,0
.LONG [110,325],0,0
.LONG [145,395],0,0 ;WAVE 14
.LONG 15,0,0
.LONG 2,0,0
.LONG [222,175],0,0
.LONG [252,211],0,0 ;WAVE 15
.LONG 17,0,0
.LONG 4,0,0
.LONG [05,175],0,0
.LONG [55,211],0,0 ;WAVE 16
.LONG 6,0,0
.LONG 3,0,0
.LONG [110,325],0,0
.LONG [145,395],0,0 ;WAVE 17
.LONG 18,0,0
.LONG 2,0,0
.LONG [05,175],0,0
.LONG [55,211],0,0 ;WAVE 18
.LONG 16,0,0
.LONG 3,0,0
CIRCB3:
;BOXES FOR CIRCUIT 3
;BOXES FOR CIRCUIT 2
;BXTL:
;UPPER LEFT BOX Y,X
.LONG [110,325],[05,175],[222,175] ;WAVE 1
.LONG [145,395],[55,211],[252,211] ;WAVE 1
.LONG 2,8,13 ;WHERE DOES IT GO
.LONG 2,3,4 ;FROM DOOR VARIABLE
.LONG [110,325],[05,175],[222,175] ;WAVE 2
.LONG [145,395],[55,211],[252,211] ;WAVE 2
.LONG 3,9,14
.LONG 2,3,4
.LONG [05,175],[222,175],0 ;3
.LONG [55,211],[252,211],0
.LONG 4,15,0
.LONG 3,4,0
.LONG [05,175],0,0 ;4
.LONG [55,211],0,0
.LONG 11,0,0
.LONG 3,0,0
.LONG [222,175],0,0 ;WAVE 5
.LONG [252,211],0,0
.LONG 6,0,0
.LONG 4,0,0
.LONG [110,325],0,0 ;6
.LONG [145,395],0,0
.LONG 7,0,0
.LONG 2,0,0
.LONG [110,325],0,0 ;WAVE 7
.LONG [145,395],0,0
.LONG 19,0,0 ;TO BONUS ROOM #1
.LONG 2,0,0
.LONG [110,325],0,0
.LONG [145,395],0,0 ;WAVE 8
.LONG 9,0,0
.LONG 2,0,0
.LONG [110,325],0,0
.LONG [145,395],0,0 ;WAVE 9
.LONG 4,0,0
.LONG 2,0,0
.LONG [110,325],0,0 ;NON EXISTENT
.LONG [145,395],0,0 ;WAVE 10
.LONG 11,0,0
.LONG 2,0,0
.LONG [110,325],0,0
.LONG [145,395],0,0 ;WAVE 11
.LONG 12,0,0
.LONG 2,0,0
.LONG [222,175],0,0
.LONG [252,395],0,0 ;WAVE 12
.LONG 5,0,0
.LONG 4,0,0
.LONG [110,325],0,0
.LONG [145,395],0,0 ;WAVE 13
.LONG 14,0,0
.LONG 2,0,0
.LONG [110,325],0,0
.LONG [145,395],0,0 ;WAVE 14
.LONG 15,0,0
.LONG 2,0,0
.LONG [222,175],0,0
.LONG [252,211],0,0 ;WAVE 15
.LONG 17,0,0
.LONG 4,0,0
.LONG [05,175],0,0
.LONG [55,211],0,0 ;WAVE 16
.LONG 6,0,0
.LONG 3,0,0
.LONG [110,325],0,0
.LONG [145,395],0,0 ;WAVE 17
.LONG 18,0,0
.LONG 2,0,0
.LONG [05,175],0,0
.LONG [55,211],0,0 ;WAVE 18
.LONG 16,0,0
.LONG 3,0,0
.LONG [110,325],0,0 ;WAVE 19
.LONG [145,395],0,0
.LONG 20,0,0 ;
.LONG 2,0,0
.LONG [110,325],0,0 ;WAVE 20
.LONG [145,395],0,0
.LONG 21,0,0 ;
.LONG 2,0,0
.LONG [110,325],0,0 ;WAVE 21
.LONG [145,395],0,0
.LONG 22,0,0 ;TO BONUS RACK UP SCREEN!
.LONG 2,0,0
.END