.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