total-carnage/HELPER.ASM

5027 lines
99 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.

**************************************************************
*
* Software: Mark Turmell
* Initiated: Dec 18,1990
*
* Modified:
*
* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC.
*
*.Last mod - 1/9/92 18:39
**************************************************************
.FILE 'HELPER.ASM'
.TITLE 'TOTAL CARNAGE GAME PROGRAM'
.WIDTH 132
.OPTION B,D,L,T
.MNOLIST
.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 "GAME.EQU"
.include "audit.equ"
.include "WARP.TBL"
;SOUND HEADERS USED
.REF BEEP1,STATSND,SLIDEIN,EXITSND,TUNE3,EXP2
.REF TUNE3O,WRPSND,TUNE2,ONESNDOVR,TUNE1
;SYMBOLS EXTERNALLY DEFINED
.REF DLYINTO,BOTMBMOD,GAMSTATE,ESCAPED,GET_AWAY
.ref aud_addnumplyrs,SCRADD2,DO_WINNER,PCP,RESTUFF_AUTOERASE
.REF STRT_FORT,DEATHS,ORCHINT,STOPOBJS
.REF STRTS2,BIG_EAT,HOME2BMOD,GENSPK,SKIPR_DN
.REF PORT_MOD,AIRRECT3A,AIRBRECT3,PATHAIR2,TARGETST,FORDBG,HULK_DN
.REF FIX3,SEND_GEMS
.REF frypbg_t,FROMSHK,NOSHOOT,XWAYBMOD
.REF HZSPD,ICN1,AIRRECT1,AIRBRECT1,ENAIR1,STRT_MOD
.REF TUFFMINE,fry_plyrs
.REF bomb_neutron,bombnon,ICN6,UPAL,ICN7
.REF CRSRAM,CTOTAL,ROAD_MOD,ICONS_DN,MAYBE_UD1
.REF FIX,FIXGUNS,ICN4
.REF DTXTB,ERASE_TXT_LTRS,AOF,SHSTG
.REF INCOM_TRAN,PCTOT,RINGS,RANDPER,ADDBMB,P1DATA,P2DATA,FREETOT
.REF RD8FONT,STRCNRMO_1,ERASE_TXT,NEWDBMOD,HUTLCKBMOD,MODBBMOD
.REF BLAKOUT,BGFRTP,GRNDP,UFLP,JEEPP2,CANDB,DISP_DEL,DO_MAN
.REF ICN2,ICLIST,SEND_ICON,JUMPXY2,POL2,O_MINE,JUMPXY
.REF PUTA7,HALT,DO_ALL_STUFF,DMA_SCORE,INIT_SCORE,COLCYC,START
.REF SIT2,SITLST,ZERO_BITS,SIT1,DO_RACKUP,SIT3,CYCLIFE,SIT4,ICN8
.REF GETANIXY,ARWOFF,ONARRW,SCORE_FLAG,RD7FONT,WRLD,STRCNRMO
.REF STRTA,SETPXY2,SETPXY1,FON15A,LOCKABMOD,STRLNRMO,STRT_CRM
.REF GPALOBJ,STFOBJ,INSOBJ,ADJSTWTL,FADE_STRT,CURRENT,BCURRENT
.REF FRANIM,FRANIMQ
.ref KILOBJ,KILALL,SCRIPTPLAY,IRQSKYE,STATUS,HSTGSET,WFLG
.REF XVL,YVL,SBOMB,PLYRPRCS,FADEIN,FB_FADEIN,EN_CURRENT,MODDBMOD
.REF BAKMODS,TARGET_NUM,DSRTONE_MOD,ENEMY_RECT,JEEPCYC,SETC2
.REF OBJON,OBJOFF,RUNIN,TARGET,WAVE,FB_FADEOUT,MODJBMOD
.REF SCRTST,XBOOMS,GETFPAL,WARP_KIL,SHK_ON,SENDGRN2,STRT_D
.REF DELOBJ,HTYPE,STRT_S,HULK_CNT,STATIC_COVER,CLNPAL,MODCBMOD
.REF DELAYALL,RACKBMOD,PLYROBJS,CNTDIG1,CNTDIG2,timeron,MODZBMOD
.REF ERECT12,ZONE_TXT2,BOOMS,MODHBMOD
.REF SQR_FLG,SQUARES,NEWD2BMOD
.REF FON15X,FON15W,FON15V,FON15M,TNTIT
.REF DELOFFBOTL
.REF P1CTRL,P2CTRL
.REF RANGRAND
.REF JOY_UPDATE,WARPTXT,OFFSCRN
.REF SEND_TOP,DOLORD,BGND_UD1,KILBGND
.ref anim_killall,NO_START,INTRO,STATSNDS
.ref AUD1,ZONE_TXT3
;SYMBOLS DEFINED IN THIS FILE
.DEF NOCAN2,digit_t,WTIMER0 ;,KEEP_WARP
.DEF STOPPLYR,INAWARP,JET_KILLS,CMBAK,YESPWRD,LOCK_NUM,STRT_G
.DEF INST_WARP,SCRLUP,ROAD2_MOD
.DEF DSRTNEW_MOD,SETDET,DO_NEUTS
.DEF BIGMAP,BGDO,COMEOUT,WARPOUT,KPARWP,GOBACK
.DEF MAPOUT,MAPDN,WARPER,STRT_WRP,WORDS
.DEF INFO_BOX,KILJOY,WAITTNT,TAUNTOUT,KP_TAUNT,TWAS1
.DEF AFTR_WRP,MINE_FLG,TNT_TYPE
.def PLYRS_CNTR,SHLD1,SHLD2
;UNINITIALIZED RAM DEFINITIONS
;EQUATES FOR THIS FILE
.BSS JET_KILLS,32 ;FOR BONUS
.BSS INAWARP,16
.BSS TNT_TYPE,16
.BSS KEEP_WARP,16
.BSS AFTR_WRP,16
.BSS KP_TAUNT,32
.BSS MAPOUT,32
.BSS KEEP_P,32
.BSS PALTMP,16*16*2 ;ALLOCATE 2 X COLOR AREA IN RAM
.BSS TAUNTOUT,16
.BSS WORDS,16*5
.BSS WARPOUT,16
.BSS LOCK_NUM,16
.BSS MINE_FLG,16
.BSS KPARWP,32
.BSS KEEP_STUFF,32*17 ;FOR RETURNING AFTER WARP
.BSS INFO_BOX,32 ;FOR RETURNING AFTER WARP
.BSS MAPNUM,16
.BSS RAMNO,64
.BSS KEEP2,16
.BSS KEEP3,16
.TEXT
BLIP .WORD >F3F7,>20,>8099,0 ;BLIP SND
********************************
STRT_G
MOVI GOOBP,A8 ;PAL NAME
MOVI PALTMP,A9 ;RAM AREA
MOVI [1,13],A10 ;BEGIN/END COLOR #
MOVK 6,A11 ;RATE IN TICKS
CREATE CYCPID,COLCYC ;COLOR CYCLER ON
RETS
LK1RECT .WORD 1+200,0+200,190H+200,40H+200 ;LOCK DOWN 1 RECT LIST
.WORD 160H+200,0+200,190H+200,0FAH+200
.WORD 0
LK1BRECT
.WORD 1+200,0+200,9FH+200,32H+200 ;BULLET RECT LOCK 1
.WORD 105H+200,0+200,190H+200,32H+200
.WORD 165H+200,0+200,190H+200,0FAH+200
.WORD 0
LK3RECT .WORD 250,0+200,190H+147,33H+200 ;LOCK DOWN 3 RECT LIST
.WORD 0
LK3BRECT
.WORD 250,0+200,9AH+200,20H+200 ;BULLET RECT LOCK 3
.WORD 105H+190,0+200,160H+190,20H+200
.WORD 0
LK3GRECT ;FOR GRUNTS
.WORD 0FAH,0+200,158H,118H,7 ;GRUNT RECT LOCK 3
.WORD 1B0H,0+200,225H,118H,3
.WORD 0
LK5RECT
.WORD 0CAH,0C8H,0167H,0FCH ;TOP LFT
.WORD 1BCH,0C8H,253H,0FCH ;TOP RGT
.WORD 0C0H,0C8H,0E8H,1FBH ;LFT SIDE
.WORD 234H,0C8H,263H,1FBH ;RGT SIDE
.WORD 0
LK5BRECT
.WORD 0CAH,0C8H,0167H-10,0FCH-18 ;TOP LFT
.WORD 1BCH+10,0C8H,253H,0FCH-18 ;TOP RGT
.WORD 0C0H,0C8H,0E8H-12,11BH ;LFT SIDE UPPER
.WORD 234H+10,0C8H,263H,11BH ;RGT SIDE
.WORD 0C0H,0175H,0E8H-12,1FBH ;LFT SIDE LOWER
.WORD 234H+10,0175H,263H,1FBH ;RGT SIDE
.WORD 0
LK5GRECT ;FOR GRUNTS
.WORD 0FAH,0+200,158H,108H,5
.WORD 1B0H,0+200,225H,108H,5
.WORD 0
LK1SPWN ;GRUNTS SPAWN FROM HERE
.WORD 0,1,170+200,270+200,185+200,277+200
.WORD 0,3,-50+200,130+200,-35+200,145+200
.WORD 0,5,179+200,-15+200,185+200,-1+200
.WORD 0,3,-50+200,130+200,-35+200,145+200
.WORD 0,1,170+200,270+200,185+200,277+200
.WORD 0,5,179+200,-15+200,185+200,-1+200
.WORD 7,7,1A4H+200,52H+200,212H+200,64H+200 ;FROM ROOF
.WORD 7,7,1A4H+200,52H+200,212H+200,64H+200 ;FROM ROOF
LK2SPWN ;3 ALSO ;GRUNTS SPAWN FROM HERE
.WORD 0,1,170+200,270+200,185+200,277+200
.WORD 0,3,-45+200,120+200,-30+200,135+200
.WORD 0,5,167H+4,0B1H-10,16DH+4,0B5H-10
.WORD 0,7,410+200,123+200,435+200,135+200
.WORD 0,1,170+200,270+200,185+200,277+200
.WORD 0,3,-45+200,120+200,-30+200,135+200
.WORD 0,5,167H+4,0B1H-10,16DH+4,0B5H-10
.WORD 0,7,410+200,123+200,435+200,135+200
LK5SPWN ;GRUNTS SPAWN FROM HERE
.WORD 0,1,170+200,270+200,185+200,277+200
.WORD 0,3,-55+200,130+200,-50+200,145+200
.WORD 0,5,167H+4,0B1H-20,16DH+4,0B5H-20
.WORD 0,7,410+200,130+200,435+200,145+200
.WORD 0,1,170+200,270+200,185+200,277+200
.WORD 0,3,-55+200,130+200,-50+200,145+200
.WORD 0,5,167H+4,0B1H-20,16DH+4,0B5H-20
.WORD 0,7,410+200,130+200,435+200,145+200
DOTEXT:
;BRING OUT MISSION BOX
;LIST TEXT OBJECTIVES
;DIE OFF WHEN MAP LEAVES
MOVI BX1,A14
CALLA DO_ALL_STUFF
CALLA ADJSTWTL
MOVE A0,*A13(PDATA),L
MOVI BX2,A14
CALLA DO_ALL_STUFF
CALLA ADJSTWTL
MOVE A0,*A13(PDATA+32),L
MOVI BX2,A14
CALLA DO_ALL_STUFF
MOVE A0,*A13(PDATA+64),L
MOVI 088-200,A1
MOVE A1,*A0(OYPOS)
CALLA ADJSTWTL
MOVI BX2,A14
CALLA DO_ALL_STUFF
MOVE A0,*A13(PDATA+96),L
MOVI -04FH,A1
MOVE A1,*A0(OYPOS)
CALLA ADJSTWTL
MOVI BX3,A14
CALLA DO_ALL_STUFF
CALLA ADJSTWTL
MOVE A0,*A13(PDATA+128),L
MOVE @MAPNUM,A0
SUBK 3,A0
JRNZ VOUT0
SLEEPK 1
MOVI SLIDEIN,A0
CALLA ONESND
MOVK 5,A9
MOVE A13,A10
VOUT9 MOVE *A10(PDATA),A0,L
MOVE *A0(OXPOS),A1
ADDI 99,A1
MOVE A1,*A0(OXPOS)
ADDK 32,A10
DSJ A9,VOUT9
MOVI 47H,A11
JRUC VOUT
VOUT0 SLEEPK 1 ;60
MOVI SLIDEIN,A0
CALLA ONESND
MOVI 47H,A11
VOUT SLEEPK 1
MOVE A13,A10
MOVK 5,A9
VOUT1 MOVE *A10(PDATA),A0,L
MOVE *A0(OYPOS),A1
ADDK 3,A1
MOVE A1,*A0(OYPOS)
ADDK 32,A10
DSJ A9,VOUT1
DSJ A11,VOUT
CLR A0
MOVE A0,@WRLD
MOVI RD7FONT,A11 ;FONT TABLE
MOVK 1,A10 ;Y,X SPACING BETWEEN CHARCTERS
MOVE @MAPNUM,A0
JRZ TEX1
CMPI 1,A0
JRZ TEX2
CMPI 2,A0
JRZ TEX3
;ORCUS HINTS!
;ORCUS HINTS
;HNT1 .BYTE "HINTS FOR",0
;HNT1A .BYTE "BEATING ORCUS",0
;HNT2A .BYTE "SHOOT OFF THE ARM",0
;HNT3 .BYTE "GUNS FIRST. THEN:",0
;HNT3A .BYTE "BLOW OFF UPPER",0
;HNT3B .BYTE "ARM STUMPS",0
;HNT4 .BYTE "LOB GRENADES ONTO",0
;HNT4A .BYTE "BOTH OF HIS EYES",0
;HNT5 .BYTE "PUMMEL HIS UPPER",0
;HNT5A .BYTE "HEAD. BOMBS HELP!",0
;HNT6 .BYTE "DROP BOMBS UNDER",0
;HNT7 .BYTE "HIM AND BACK OFF",0
;HNT8 .BYTE "STANDING UNDER",0
;HNT8A .BYTE "HIS MOUTH WILL",0
;HNT9 .BYTE "RELEASE TONGUES",0
MOVI BLIP,A0
CALLA ONESND
MOVI HNT1,A8 ;OBJECTIVE 1
MOVI [45-25-1,99+0101],A9 ;SCRN Y/X
MOVI 0C0CH,A6 ;
CLR A0
JSRP STRCNRMO
MOVI BLIP,A0
CALLA ONESND
MOVI HNT1A,A8 ;OBJECTIVE 1
MOVI [55-25-1,99+0101],A9 ;SCRN Y/X
MOVI 0C0CH,A6 ;
CLR A0
JSRP STRCNRMO
MOVI HNT2A,A8 ;OBJECTIVE 1
MOVI [70-25-1,99+0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI HNT3,A8 ;OBJECTIVE 1
MOVI [80-25-1,99+0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI HNT3A,A8 ;OBJECTIVE 1
MOVI [95-25-1,99+0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI HNT3B,A8 ;OBJECTIVE 1
MOVI [105-25-1,99+0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI HNT4,A8 ;OBJECTIVE 1
MOVI [120-25-1,99+0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI HNT4A,A8 ;OBJECTIVE 1
MOVI [130-25-1,99+0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI HNT5,A8 ;OBJECTIVE 1
MOVI [145-25-1,99+0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI HNT5A,A8 ;OBJECTIVE 1
MOVI [155-25-1,99+0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI HNT6,A8 ;OBJECTIVE 1
MOVI [170-25-1,99+0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI HNT7,A8 ;OBJECTIVE 1
MOVI [180-25-1,99+0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI HNT8,A8 ;OBJECTIVE 1
MOVI [195-25-1,99+0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI HNT8A,A8 ;OBJECTIVE 1
MOVI [205-25-1,99+0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI HNT9,A8 ;OBJECTIVE 1
MOVI [215-25-1,99+0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
SLEEP 9*60
JRUC OBJGONE
TEX3
;MAP 3 TEXT HERE
MOVI T3OBJ3,A8 ;OBJECTIVE 1
MOVI [45-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T3OBJ4,A8 ;OBJECTIVE 1
MOVI [55-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T3OBJ5,A8 ;OBJECTIVE 1
MOVI [65-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T3OBJ6,A8 ;OBJECTIVE 1
MOVI [75-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T3OBJ7,A8 ;OBJECTIVE 1
MOVI [85-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T3OBJ8,A8 ;OBJECTIVE 1
MOVI [95-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T3OBJ9,A8 ;OBJECTIVE 1
MOVI [105-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T3OBJ10,A8 ;OBJECTIVE 1
MOVI [115-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T3OBJ11,A8 ;OBJECTIVE 1
MOVI [125-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T3OBJ12,A8 ;OBJECTIVE 1
MOVI [140-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T3OBJ13,A8 ;OBJECTIVE 1
MOVI [150-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T3OBJ14,A8 ;OBJECTIVE 1
MOVI [164-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T3OBJ15,A8 ;OBJECTIVE 1
MOVI [179-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T3OBJ16,A8 ;OBJECTIVE 1
MOVI [194-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T3OBJ17,A8 ;OBJECTIVE 1
MOVI [204-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T3OBJ18,A8 ;OBJECTIVE 1
MOVI [218-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
JRUC READ
TEX2
;MAP 2 TEXT HERE
MOVI T2OBJ0,A8 ;OBJECTIVE 1
MOVI [45-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T2OBJ1,A8 ;OBJECTIVE 1
MOVI [55-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T2OBJ2,A8 ;OBJECTIVE 1
MOVI [65-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T2OBJ3,A8 ;OBJECTIVE 1
MOVI [75-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T2OBJ4,A8 ;OBJECTIVE 1
MOVI [85-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T2OBJ5,A8 ;OBJECTIVE 1
MOVI [100-25-1,0101],A9 ;SCRN Y/X
MOVI 0C0CH,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T2OBJ6,A8 ;OBJECTIVE 1
MOVI [110-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T2OBJ7,A8 ;OBJECTIVE 1
MOVI [120-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T2OBJ8,A8 ;OBJECTIVE 1
MOVI [130-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T2OBJ9,A8 ;OBJECTIVE 1
MOVI [145-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T2OBJ10,A8 ;OBJECTIVE 1
MOVI [155-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T2OBJ11,A8 ;OBJECTIVE 1
MOVI [170-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T2OBJ11A,A8 ;OBJECTIVE 1
MOVI [180-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T2OBJ11B,A8 ;OBJECTIVE 1
MOVI [190-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T2OBJ12,A8 ;OBJECTIVE 1
MOVI [205-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI T2OBJ13,A8 ;OBJECTIVE 1
MOVI [215-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
JRUC READ
TEX1
;MAP 1 TEXT HERE
MOVI OBJ3,A8 ;OBJECTIVE 1
MOVI [45-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI OBJ4,A8 ;OBJECTIVE 1
MOVI [55-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI OBJ5,A8 ;OBJECTIVE 1
MOVI [70-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI OBJ6,A8 ;OBJECTIVE 1
MOVI [80-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI OBJ7,A8 ;OBJECTIVE 1
MOVI [95-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI OBJ8,A8 ;OBJECTIVE 1
MOVI [105-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI OBJ9,A8 ;OBJECTIVE 1
MOVI [120-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI OBJ10,A8 ;OBJECTIVE 1
MOVI [130-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI OBJ11,A8 ;OBJECTIVE 1
MOVI [145-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI OBJ12,A8 ;OBJECTIVE 1
MOVI [155-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI OBJ13,A8 ;OBJECTIVE 1
MOVI [165-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI OBJ14,A8 ;OBJECTIVE 1
MOVI [175-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI OBJ15,A8 ;OBJECTIVE 1
MOVI [190-25-1,0101],A9 ;SCRN Y/X
MOVI 2525H,A6 ;
CLR A0
JSRP STRCNRMO
MOVI OBJ1,A8 ;OBJECTIVE 1
MOVI [180-1,0101],A9 ;SCRN Y/X
MOVI 0C0CH,A6 ;
CLR A0
JSRP STRCNRMO
MOVI OBJ2,A8 ;OBJECTIVE 1
MOVI [190-1,0101],A9 ;SCRN Y/X
MOVI 0C0CH,A6 ;
CLR A0
JSRP STRCNRMO
READ SLEEP 12*60 ;10*60
OBJGONE
;KILL ALL TEXT OBJECTIVES
MOVE @MAPNUM,A0
SUBK 3,A0
JRNZ ONH
;HINTS
MOVI 45,A10 ;TIME FOR RINGS
CREATE0 SETDET ;SET DELYDET ON PLAYERS
SLEEPK 2
CLR A0
MOVE A0,@HALT
MOVE A0,@MAPOUT,L
ONH
CALLA ERASE_TXT
MOVI SLIDEIN,A0
CALLA ONESND
MOVI 88,A11
NOUT SLEEPK 1
MOVE A13,A10
MOVK 5,A9
NOUT1 MOVE *A10(PDATA),A0,L
MOVE *A0(OXPOS),A1
SUBK 8,A1
MOVE A1,*A0(OXPOS)
ADDK 32,A10
DSJ A9,NOUT1
DSJ A11,NOUT
MOVE A13,A10
MOVK 5,A9
LOUT1 MOVE *A10(PDATA),A0,L
ADDK 32,A10
CALLA DELOBJ
DSJ A9,LOUT1
DIE
;MISN 1 TEXT
OBJ1 .BYTE "BOMBS DESTROY",0
OBJ2 .BYTE "MINES AND BARRELS",0
OBJ3 .BYTE "DESTROY GENERAL",0
OBJ4 .BYTE "AKHBOOB'S ARMY",0
OBJ5 .BYTE "GAME GETS EASIER",0
OBJ6 .BYTE "WITH 2 PLAYERS!",0
OBJ7 .BYTE "RESCUE REPORTERS",0
OBJ8 .BYTE "AND ALL CIVILIANS",0
OBJ9 .BYTE "USE WARP DISCS",0
OBJ10 .BYTE "FOR TRANSPORT",0
OBJ11 .BYTE "USE TIME BOMBS",0
OBJ12 .BYTE "AND MISSILES TO",0
OBJ13 .BYTE "DESTROY ALL KEY",0
OBJ14 .BYTE "TARGETS",0
OBJ15 .BYTE "PROTECT OUR FLAG",0
;MISN 2 TEXT
T2OBJ0 .BYTE "FOLLOW ROAD TO",0
T2OBJ1 .BYTE "AIRPORT. WEAVE UP",0
T2OBJ2 .BYTE "AND DOWN TRYING",0
T2OBJ3 .BYTE "TO DESTROY SCUD",0
T2OBJ4 .BYTE "TRUCKS.",0
T2OBJ5 .BYTE "HINTS:",0
T2OBJ6 .BYTE "TRY SQUEEZING",0
T2OBJ7 .BYTE "BETWEEN BARRELS",0
T2OBJ8 .BYTE "AND WALLS!",0
T2OBJ9 .BYTE "KEYS ALLOW ENTRY",0
T2OBJ10 .BYTE "INTO SECRET PATHS",0
T2OBJ11 .BYTE "SHOOT A SHAKING",0
T2OBJ11A .BYTE "BARREL WITH ONE",0
T2OBJ11B .BYTE "BULLET TO RESET!",0
T2OBJ12 .BYTE "BUMP INTO JETS",0
T2OBJ13 .BYTE "FOR HIDDEN KEYS!",0
;MISN 3 TEXT
T3OBJ3 .BYTE "ENTER AHKBOOB'S",0
T3OBJ4 .BYTE "TOP SECRET",0
T3OBJ5 .BYTE "FACILITY AND",0
T3OBJ6 .BYTE "DESTROY HIS",0
T3OBJ7 .BYTE "CAPABILITY TO",0
T3OBJ8 .BYTE "CREATE MUTANT",0
T3OBJ9 .BYTE "LIFE FORMS. YOU",0
T3OBJ10 .BYTE "MUST THEN FIGHT",0
T3OBJ11 .BYTE "AND CAPTURE HIM.",0
T3OBJ12 .BYTE "ENTER SECRET PATH",0
T3OBJ13 .BYTE "FOR BIG KEY BONUS",0
T3OBJ14 .BYTE "EAT AT BROWNS",0
T3OBJ15 .BYTE "BULLS RULE NOW",0
T3OBJ16 .BYTE "PISTONS WILL RULE",0
T3OBJ17 .BYTE "THE NBA AGAIN.",0
T3OBJ18 .BYTE "MIDWAY RULES",0
;ORCUS HINTS
HNT1 .BYTE "HINTS FOR",0
HNT1A .BYTE "BEATING ORCUS",0
HNT2A .BYTE "SHOOT OFF ARM",0
HNT3 .BYTE "GUNS FIRST. THEN:",0
HNT3A .BYTE "BLOW OFF UPPER",0
HNT3B .BYTE "ARM STUMPS",0
HNT4 .BYTE "LOB GRENADES",0
HNT4A .BYTE "ONTO HIS EYES",0
HNT5 .BYTE "PUMMEL HIS UPPER",0
HNT5A .BYTE "HEAD. BOMBS HELP",0
HNT6 .BYTE "DROP BOMBS UNDER",0
HNT7 .BYTE "HIM AND BACK OFF",0
HNT8 .BYTE "STANDING UNDER",0
HNT8A .BYTE "HIS MOUTH WILL",0
HNT9 .BYTE "RELEASE TONGUES",0
.EVEN
XOFS .LONG [305,0],[190,0],[183,0],[305,0],[305,0],[200,0],[200,0]
.LONG [305,0],[190,0],[183,0],[305,0],[305,0],[200,0],[200,0]
YOFS .LONG [195,0],[120,0],[75,0],[195,0],[195,0],[120,0],[120,0]
.LONG [195,0],[120,0],[75,0],[195,0],[195,0],[120,0],[120,0]
GOBACK SLEEP 60
MOVE @HULK_CNT,A0
JRNZ GOBACK
CREATE0 DO_WINNER
SLEEP 90
MOVE @WAVE,A0
CMPI 23,A0
JRZ GB00
CMPI 42,A0
JRZ GB00
CMPI 26,A0
JRZ GB00
CMPI 22,A0
JRNZ GB0
GB00 CREATE FUTUREPID,SHSTG
GB0 MOVE @LOCK_NUM,A10
SLL 5,A10
MOVI XOFS,A7
ADD A10,A7
MOVE *A7,A7,L
MOVE @WORLDTLX,A0,L
ADD A7,A0
MOVE @WORLDTLY,A1,L
MOVI YOFS,A7
ADD A10,A7
MOVE *A7,A7,L
ADD A7,A1
MOVI OTHERP,A2
MOVI 69,A3 ;70 FOR INSTANT WARP BACK
MOVI DMAWNZ|M_PIXSCAN,A4
MOVI CLSNEUT|TYPICON|SUBMAN,A5
CLR A6
CLR A7
CALLA BEGINOBJ2
CALLA OBJOFF
CREATE0 SENDGRN2
SLEEPK 15
MOVE A8,A0
CALLA OBJON
CREATE NEUT2PID,DO_NEUTS
JRUC WRP3
DO_NEUTS
MOVK 1,A8
CREATE FUTUREPID,bomb_neutron
DON1 SLEEP 18*60
MOVI NEUT2PID,A0
MOVE A0,*A13(PROCID)
MOVE @HALT,A0
JRNZ DON1
JRUC DO_NEUTS
INST_WARP
SLEEP 180
movi AUDWARPA,a0 ;# Appeared
calla AUD1
MOVI 0D420000H,A0
MOVE @WORLDTLY,A1,L
ADDI [133,0],A1
MOVI OTHERP,A2 ;GET OTHER PAL FOR THIS DISC
MOVI 70,A3 ;70 FOR INSTANT WARP
MOVI DMAWNZ|M_PIXSCAN,A4
MOVI CLSNEUT|TYPICON|SUBMAN,A5
CLR A6
CLR A7
CALLA BEGINOBJ2
CALLA OBJOFF
CREATE0 SENDGRN2
SLEEPK 15
MOVE A8,A0
CALLA OBJON
JRUC WRP3
STRT_WRP
;A8=SHELL OF WARP
;TURN ON ALL PIECES
MOVE *A8(OSIZEX),A0
CMPI 48H,A0 ;ORCHINT
JRNZ SW10
;HINT BUTTON
MOVE A13,*A8(OPLINK),L
MOVI ORCHINT,A0
MOVE A0,*A8(OIMG),L
MOVI 71,A3
MOVE A3,*A8(OZPOS)
MOVI DMAWNZ|M_PIXSCAN,A4
MOVE A4,*A8(OFLAGS)
MOVI CLSNEUT|TYPICON|SUBMAN,A5
MOVE A5,*A8(OID)
CREATE WARPPID,WAITB
MOVE A0,*A13(PDATA),L ;PUT SPIN PROC INTO WARPER PDATA
UTP1 SLEEPK 1
MOVE @MAPOUT,A0,L
JRNZ UTP2
MOVE @WORLDTLY+16,A0
MOVE *A8(OYPOS),A1
ADDI 250,A0
CMP A0,A1
JRC UTP1
;SKIPPED GETTING HINT ICON
UTP2
CALLA DELOBJA8
MOVI WARPPID,A0
CALLA KIL1C
; MOVE *A13(PDATA),A0,L ;PROCESS BLINKING HEAD
; CALLA KILL
DIE
;BLINK HINTS
WAITB
MOVK 8,A11
FLP MOVE *A8(OPAL),A10,L
ORI 1F1F0000H,A10
MOVE A10,*A8(OPAL),L
MOVE *A8(OFLAGS),A0,W
ORI 8,A0
MOVE A0,*A8(OFLAGS),W
SLEEPK 2
zext a10
MOVE A10,*A8(OPAL),L
MOVE *A8(OFLAGS),A0,W
ANDI 0FFF7H,A0
MOVE A0,*A8(OFLAGS),W
SLEEPK 5
DSJ A11,FLP
SLEEP 120
JRUC WAITB
SW10
movi AUDWARPA,a0 ;# Appeared
calla AUD1
MOVE *A8(OYVAL),A10,L
MOVE *A8(OXVAL),A11,L
CALLA DELOBJA8 ;KILL OLD SHELL
MOVE A10,A1
MOVE A11,A0
MOVI OTHERP,A2 ;GET OTHER PAL FOR THIS DISC
MOVI 70,A3 ;70 FOR INSTANT WARP
JRUC WRP2
WARPER
;TURN ON WARP BUTTON AT BOTTOM OF SCREEN
;IF IT SCROLLS OFF SCRN, KILL IT, DIE
;IF PLAYER TOUCHES IT, XFERPROC TO WARPER SLIDING OUT
;HALT ALL ACTION
;ENTER WARP CODE, ETC.
;RESTART ACTION AT NEW LOCATION
MOVE @WORLDTLX,A0,L
ADDI [0147H,0],A0
MOVE @WORLDTLY,A1,L
ADDI [0C0H-02CH,0],A1
MOVI SPIN1,A2
MOVI 71,A3
WRP2
MOVI DMAWNZ|M_PIXSCAN,A4
MOVI CLSNEUT|TYPICON|SUBMAN,A5
CLR A6
CLR A7
CALLA BEGINOBJ2
****************************************************************************
;TEST BOOB SHIP TURRET ATTACHED TO SPINNING WARP DISC!
;POSSIBLY CREATE THIS TWICE! COULD BE FUN
; MOVE A13,A10
; MOVK 3,A9 ;GUN ON TOP OF BTR60
;;CREATE TURRET ON BOOB SHIP
;;A8=BOOB SHIP IMG PNTR THIS TURRET WILL CONSTANTLY ALIGN TO
; .REF TTORSO
; CREATE T72PID,TTORSO
; CREATE T72PID,TTORSO
; CREATE T72PID,TTORSO
; CREATE T72PID,TTORSO
;; MOVE A0,*A13(KPTSO),L ;KEEP TURRET PROC AROUND
;TURRET PROCESS STORES THIS BACK INTO CALLING PROCESS!
;; MOVE A8,*A10(KPTSOBJ),L
****************************************************************************
; .REF DO_FLMRS
; CREATE0 DO_FLMRS
WRP3 CREATE WARPPID,ANISPN
MOVE A0,*A13(PDATA),L ;PUT SPIN PROC INTO WARPER PDATA
WTP1 SLEEP 200 ;500
MOVE *A8(OYPOS),A0
MOVE @WORLDTLY+16,A1
CMP A1,A0
JRC WTP1 ;HASN'T APPEARED ON SCRN YET!
CALLA SCRTST
JRZ WTP1
;SKIPPED GETTING WARP
CALLA DELOBJA8
MOVE *A13(PDATA),A0,L ;PROCESS SPINNING THE DISC
CALLA KILL
DIE
; .REF MORTAR_GRNT
;DUF SLEEP 60
; CREATE BOSSPID,MORTAR_GRNT
; SLEEP 180
; JRUC DUF
ANISPN
MOVI WSPINS,A9
WBG1 CLR A1
JSRP FRANIM
JRNC WBG1
JRUC ANISPN
WSPINS
.LONG SPIN1
.WORD 2
.LONG SPIN2
.WORD 2
.LONG SPIN3
.WORD 2
.LONG SPIN4
.WORD 2
.LONG SPIN5
.WORD 2
.LONG SPIN6
.WORD 2
.LONG SPIN7
.WORD 2
.LONG SPIN8
.WORD 2
.LONG 0
SPREAD
CREATE0 SPREAD2
MOVK 8,A11
LE1
MOVE A11,A0
SLL 5,A0
MOVI XVL2,A1
ADD A0,A1
MOVE *A1,A9,L
ADDI YVL2,A0
MOVE *A0,A10,L
CREATE0 KM2A
DSJS A11,LE1
DIE
SPREAD2
MOVK 8,A11
LE2
MOVE A11,A0
SLL 5,A0
MOVI XVL,A1
ADD A0,A1
MOVE *A1,A9,L
ADDI YVL,A0
MOVE *A0,A10,L
CREATE0 KM2A
DSJS A11,LE2
DIE
KBM ;ARM RGT
.LONG 0,0,SPIN1
.WORD 93,DMAWNZ+M_NOCOLL,CLSDEAD
.LONG 0H,0H
AKBM2
.LONG [340,0],[150,0]
.LONG XPLD1
.WORD 180,DMAWNZ+M_NOCOLL,CLSDEAD
.LONG 0,0
KM2A
;TURN ON BURST EXP
;SEND IT OUT AT CORRECT ANGLE
;KILL OFF
;A11=BURST #
MOVI KBM,A14 ;BLOOD
CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE
CALLA STFOBJ ;STUFF OBJECT DATA
CALLA INSOBJ ;INSERT OBJECT INTO LIST
MOVE *A8(OXVAL),A1,L
MOVE A1,*A0(OXVAL),L
MOVE *A8(OYVAL),A1,L
MOVE A1,*A0(OYVAL),L
MOVE A0,A8
MOVE A9,*A8(OXVEL),L
MOVE A10,*A8(OYVEL),L
MOVI WSPINS,A9
JSRP FRANIMQ
MOVE *A8(OXVEL),A0,L
NEG A0
MOVE A0,*A8(OXVEL),L
MOVE *A8(OYVEL),A0,L
NEG A0
MOVE A0,*A8(OYVEL),L
MOVI WSPINS,A9
jauc FRQDELDIE
KM2B
MOVI AKBM2,A14 ;BLOOD
CALLA DO_ALL_STUFF
CALLA ADJSTWTL
MOVE A0,A8
MOVI 08000H,A0
MOVE A0,*A8(OYVEL),L
MOVE *A10(OXPOS),A0
SUBK 12H,A0
MOVE A0,*A8(OXPOS)
MOVE *A10(OYPOS),A0
SUBK 11H,A0
MOVE A0,*A8(OYPOS)
MOVI XBOOMS,A9
jauc FRQDELDIE
XVL2 .LONG 0,0,14000H*3,18000H*3,14000H*3,0,-14000H*3,-18000H*3,-14000H*3
YVL2 .LONG 0,-16000H*3,-14000H*3,0,14000H*3,16000H*3,14000H*3,0,-14000H*3
LOCKA_MOD:
.LONG LOCKABMOD ;THIS IS FROM BLIMP (MODULE NAME)
.WORD -46+200,-38+200 ;x,y start pos.
.LONG >FFFFFFFF
LOCKB_MOD:
.LONG MODBBMOD ;THIS IS FROM BLIMP (MODULE NAME)
.WORD 0B0H,094H ;x,y start pos.
.LONG >FFFFFFFF
LOCKD_MOD:
.LONG MODDBMOD ;THIS IS FROM BLIMP (MODULE NAME)
.WORD 0CDH,0C6H ;x,y start pos.
.LONG >FFFFFFFF
LOCKJ_MOD:
.LONG MODJBMOD ;ROAD WITH LOTS OF GREEN POOLS
.WORD 0CDH,0C6H ;x,y start pos.
.LONG >FFFFFFFF
LOCKJ2_MOD:
.LONG MODJBMOD ;ROAD WITH LOTS OF GREEN POOLS
.WORD 0CDH,200 ;x,y start pos.
.LONG >FFFFFFFF
LOCKH_MOD:
.LONG MODHBMOD ;ROAD WITH LOTS OF GREEN POOLS
.WORD 0A9H,0AFH ;x,y start pos.
.LONG >FFFFFFFF
LOCKC_MOD:
.LONG MODCBMOD ;ROAD WITH LOTS OF GREEN POOLS
.WORD 0C2H,0BCH ;x,y start pos.
.LONG >FFFFFFFF
LOCKZ_MOD:
.LONG MODZBMOD ;ROAD WITH LOTS OF GREEN POOLS
.WORD 0CDH,0C6H ;x,y start pos.
.LONG >FFFFFFFF
PALBNO .LONG SCOREPAL,DESRTPL,0
PALENO .LONG 0*32*32+0*32+0,0
PALCNO2 .LONG 11*32*32+7*32+0,DESRTPL,0
PALCNO3 .LONG 3*32*32+4*32+5,0
TUNE6 .WORD >F3F0,2,>8008,0 ;UPPER DESERT TUNE
;PUT IN WAVES ALSO!
CMBAK
;COMING BACK FROM A LOCKDOWN
movi AUDWARPC,a0 ;# Completed
calla AUD1
MOVE @WAVE,A0
CMPI 28,A0
JRZ NEWT
CMPI 23,A0
JRZ NEWT
subk 22,A0
JRNZ CMBAK2
NEWT MOVI TUNE6,A0
CALLA ONESNDOVR
CMBAK2
MOVI WRPSND,A0
CALLA ONESNDOVR
MOVK 1,A0
MOVE A0,@SHK_ON
MOVE A0,@AFTR_WRP
;FADE AUTOPAL
MOVI PALCNO,A11
JSRP FADE_STRT
MOVI KEEP_STUFF,A1
MOVE *A1+,A0,L
MOVE A0,@WORLDTLX,L
MOVE *A1+,A0,L
MOVE A0,@WORLDTLY,L
MOVE *A1+,A0,L
MOVE A0,@BAKMODS,L
MOVE *A1+,A0,W
MOVE A0,@HSTGSET
MOVE *A1+,A0,L
MOVE A0,@CURRENT,L
MOVE *A1+,A0,L
MOVE A0,@BCURRENT,L
MOVE *A1+,A0,L
MOVE A0,@EN_CURRENT,L
MOVE *A1+,A0,L
MOVE A0,@ENEMY_RECT,L
MOVE *A1+,A0,W
MOVE A0,@JUMPXY
MOVE *A1+,A0,W
MOVE A0,@JUMPXY2
MOVE *A1+,A0,W
MOVE A0,@WAVE
MOVE *A1+,A0,L
MOVE A0,@ICLIST,L
MOVE *A1+,A0,W
MOVE A0,@HTYPE,W
MOVI 30,A10 ;TIME FOR RINGS
CREATE0 SETDET
SLEEPK 2
CALLA CLNPAL
CLR A1
MOVE A1,@DISPLAYON
CALLA BGND_UD1
MOVI BULLET,A0
CALLA BLAKOUT
MOVI PALDNO,A0 ;FADE IN BROWN AUTOPAL ALSO
MOVE @LOCK_NUM,A1
CMPI 9,A1
JRZ DCOLR
CMPI 6,A1
JRNZ DC1
;FADE IN RAM COLOR LIST
DCX MOVI RAMNO,A0
JRUC DCOLR
DC1 CMPI 3,A1
JRLT DCOLR
MOVI PALCNO,A0 ;FADE IN GREY AUTOPAL ALSO
DCOLR
MOVK 1,A1
MOVE A1,@DISPLAYON
MOVK 2,A1
CALLA FADEIN
MOVI PALBNO,A0
CALLA FB_FADEIN
CALLR PLYRS_CNTR
CLR A0
MOVE A0,@SHK_ON
CREATE JOYPID,JOY_UPDATE
CREATE ICONPID,SEND_ICON
MOVI TARGPID,A0
MOVI DELPID,A5
MOVI FUTRPID,A6
MOVI ACTIVE,A2,L
XNXT:
MOVE *A2,A2,L ;GET NEXT
JREQ XSC ;ALL DONE
MOVE *A2(PROCID),A4
CMP A6,A4 ;MATCH?
JRZ XYE
CMP A5,A4 ;MATCH?
JRZ XYE
CMP A0,A4 ;MATCH?
JRNE XNXT ;NO
XYE MOVE *A2(PTIME),A4
CMPI 5,A4
JRZ XNXT
MOVK 5,A4
MOVE A4,*A2(PTIME)
JRUC XNXT
XSC
CLR A0
MOVE A0,@WFLG
MOVE A0,@HALT
MOVE @KEEP_P,A9,L
MOVE @LOCK_NUM,A0
CMPI 5,A0
JRNZ DRIFTFIX
;INTO BIG FORT
MOVK 1,A0
CALLA DOLORD
DRIFTFIX
SLEEPK 5 ;NO MORE GUNNERS FOR AWHILE
CLR A0
MOVE A0,@AFTR_WRP
MOVE A0,@INAWARP
SLEEPK 5 ;10
CREATE0 SBOMB
; MOVI HULKPID,A0
; CALLA KIL1C
SLEEP 60
;START MESSAGE TELLING PLAYERS TOTAL KEYS COLLECTED TOTAL
CREATE0 KEY_TOTAL
MOVE @LOCK_NUM,A0
CMPI 5,A0
JRZ ROADUP
CMPI 3,A0
JRNZ NOTJP
;FROM JEEP ROAD WAVE
MOVK 1,A9 ;A9=0 FOR UP, 1 FOR RGT
CREATE ARWPID,ONARRW ;TURN ON UP ARROW
CREATE FUTUREPID,AOF ;ARROW OFF AFTER A TIME
CALLA SETC2 ;START LAND MINE COLOR CYCLE
DIE
EVAL
;EVALUATE PLAYER SUCCESS
;START PLAYER SPINNING!
CLR A0
MOVE A0,@DEATHS
DIE
KILL_SHOK
MOVE @DEATHS,A0
BTST 0,A0
JRZ EV2
MOVE @PLYRPRCS,A0,L
MOVE A0,A7
CLR A2
MOVE A2,@P1DATA+PLIVES,W
MOVK 1,A2
CALLA WARP_KIL ;KILL PLAYER
JRUC EV2A
EV2 MOVE @STATUS,A0
BTST 0,A0
JRZ EV2A
;PLYR SURVIVED! GIVE ME PNTS!
;A2=P1DATA OR P2DATA
MOVI P1DATA,A2
MOVI SHOCKPT,A1 ;AMOUNT OF SCORE
CALLA SCRADD2 ;DO IT!
EV2A
MOVE @DEATHS,A0
BTST 1,A0
JRZ EV3
MOVE @PLYRPRCS+32,A0,L
MOVE A0,A7
CLR A2
MOVE A2,@P2DATA+PLIVES,W
MOVK 1,A2
CALLA WARP_KIL ;KILL PLAYER
JRUC EV3A
EV3 MOVE @STATUS,A0
BTST 1,A0
JRZ EV3A
;PLYR SURVIVED! GIVE ME PNTS!
;A2=P1DATA OR P2DATA
MOVI P2DATA,A2
MOVI SHOCKPT,A1 ;AMOUNT OF SCORE
CALLA SCRADD2 ;DO IT!
EV3A RETS
ROADUP
; MOVK 1,A0
; CALLA DOLORD
CALLA STRT_FORT ;FORT CYCLE
CALLA SETC2 ;START LAND MINE COLOR CYCLE
CLR A9 ;A9=0 FOR UP, 1 FOR RGT
MOVE A9,@CRSRAM,L
CREATE ARWPID,ONARRW ;TURN ON UP ARROW
CREATE FUTUREPID,AOF ;ARROW OFF AFTER A TIME
DIE
NOTJP
CALLA STRT_FORT ;FORT CYCLE
CALLA STRT_D ;CYCLE SAT DISH
CALLA SETC2 ;START LAND MINE COLOR CYCLE
MOVE @LOCK_NUM,A0
CMPI 2,A0
JRZ PP2 ;BR=DON'T NEED THESE CYCLES!
CALLA JEEPCYC ;CYCLE JEEP TIRES
CALLR STRT_G ;CYCLE GOOB POOL
MOVE @LOCK_NUM,A0
CMPI 6,A0
JRZ EVAL
DIE
SETDET
;A10=LENGTH OF TIME FOR RINGS
MOVI 260,A0
MOVE @PLYRPRCS,A1,L
JRZ HI
MOVE A0,*A1(DELYDET)
HI MOVE @PLYRPRCS+32,A1,L
JRZ HI2
MOVE A0,*A1(DELYDET)
HI2 SLEEP 50
MOVE @STATUS,A0
BTST 0,A0
JRZ PP1
MOVK 1,A9
MOVI B1PID,A0
CALLA KIL1C
MOVI RNG1PID,A0
CLR A1
NOT A1
CALLA EXISTP
JRZ STRT1
move *A0(PA9),A1,L
CALLA KILL
MOVE A1,A0
CALLA DELOBJ
STRT1
CREATE RNG1PID,RINGS
PP1
MOVE @STATUS,A0
BTST 1,A0
JRZ PP2
MOVK 2,A9
MOVI B2PID,A0
CALLA KIL1C
MOVI RNG2PID,A0
CLR A1
NOT A1
CALLA EXISTP
JRZ STRT2
move *A0(PA9),A1,L
CALLA KILL
MOVE A1,A0
CALLA DELOBJ
STRT2
CREATE RNG2PID,RINGS
PP2 DIE
PALDNO .LONG 11*32*32+7*32+0,DESRTPL,0
PALCNO .LONG 5*32*32+5*32+5,DESRTPL,0
WRPSX .WORD 010DH+79,061H+30,307H-51,0D42H,01485H,09CH-20,5,13D1H
.WORD 808,307H-51+34,0
COMEOUT
;PLAYER HAS TOUCHED WARP BUTTON
;SET OFF SMART BOMB
;A9=PLYR IMG PTR WHO GOT ME
;A8=WARP DISC IMG
SLEEPK 1
MOVI HELPPID,A0
CLR A1
NOT A1
CALLA EXISTP
JRNZ COMEOUT
MOVI HELPPID,A0
MOVE A0,*A13(PROCID)
MOVE *A8(OIMG),A0,L
CMPI ORCHINT,A0
JRNZ CM020
;ORCUS HINTS!
MOVK 1,A0
MOVE A0,@HALT
MOVE A13,@MAPOUT,L
MOVK 3,A0
MOVE A0,@MAPNUM
CREATE HNTPID,DOTEXT
MOVI DMAWNZ+M_NOCOLL,A0
MOVE A0,*A8(OFLAGS)
ORC1 SLEEPK 1
MOVE @MAPOUT,A0,L
JRNZ ORC1
MOVI WARPPID,A0
CALLA KIL1C
; MOVE *A13(PDATA),A0,L
; CALLA KILL
jauc DELOBJDIE
CM020
MOVI NEUT2PID,A0
CALLA KIL1C
movi BOMBNPID,a0
calla KIL1C
CLR A0
MOVE A0,@bombnon
MOVE A9,@KEEP_P,L
MOVE *A9(OPLINK),A1,L
MOVI P1DATA+BMB_CNT,A0 ;GIVE PLAYER A BOMB WHO TOUCHED WARP
MOVE *A1(PNUM),A1
CMPI 1,A1
JRZ FLY
MOVI P2DATA+BMB_CNT,A0
FLY CALLA ADDBMB
MOVE *A8(OZPOS),A0
CMPI 69,A0
JRZ CMBAK
CMPI 70,A0
***************************************************************************
JRNZ CM2 ;TAKE OUT TO TEST A WARP
***************************************************************************
MOVE *A8(OXPOS),A0
CMPI 54H-9,A0
JRZ CM2O ;SHORTCUT TO ORCUS
CMPI 251H,A0
JRZ CM2OZ ;SHORTCUT TO TAUNT LOCKDOWN
;INSTANT WARP DISC
;A9=PLYR IMG PTR WHO GOT ME FOR SMART BOMB
CLR A0
MOVE A0,@P1DATA+WAVEPTS
MOVE A0,@P2DATA+WAVEPTS
movi AUDWARPT,a0 ;# Taken
calla AUD1
MOVE A9,@INAWARP ;IN A WARP
MOVE A9,@WFLG ;NO START BUTTONS
MOVK 2,A0
MOVE A0,@ARWOFF
MOVI KEEP_STUFF,A0
MOVE @WORLDTLX,A1,L
MOVE A1,*A0+,L
MOVE @WORLDTLY,A1,L
MOVE A1,*A0+,L
MOVE @BAKMODS,A1,L
MOVE A1,*A0+,L
MOVE @HSTGSET,A1
MOVE A1,*A0+,W
MOVE @CURRENT,A1,L
MOVE A1,*A0+,L
MOVE @BCURRENT,A1,L
MOVE A1,*A0+,L
MOVE @EN_CURRENT,A1,L
MOVE A1,*A0+,L
MOVE @ENEMY_RECT,A1,L
MOVE A1,*A0+,L
MOVE @JUMPXY,A1
MOVE A1,*A0+,W
MOVE @JUMPXY2,A1
MOVE A1,*A0+,W
MOVE @WAVE,A1
MOVE A1,*A0+,W
MOVE @ICLIST,A1,L
MOVE A1,*A0+,L
MOVE @HTYPE,A1,W
MOVE A1,*A0+,W
MOVI TARGPID,A0
MOVI DELPID,A5
MOVI FUTRPID,A6
MOVI ACTIVE,A2,L
EXNXT:
MOVE *A2,A2,L ;GET NEXT
JREQ EXSC ;ALL DONE
MOVE *A2(PROCID),A4
CMP A6,A4 ;MATCH?
JRZ YE
CMP A5,A4 ;MATCH?
JRZ YE
CMP A0,A4 ;MATCH?
JRNE EXNXT ;NO
YE MOVE *A2(PTIME),A4
CMPI 07FFFH,A4
JRZ EXNXT
MOVI 07FFFH,A4
MOVE A4,*A2(PTIME)
JRUC EXNXT
NOCAN2
MOVI 3100,A0
CALLA KIL1C
CREATE0 WTDMA
CLR A0
MOVE A0,@TAUNTOUT
CALLR KILL_SHOK
MOVE @KEEP_WARP,A2
MOVE @WAVE,A0
SUBK 32,A0
JRNZ NOCAN
MOVI 33,A0
MOVE A0,@WAVE
;AT END OF AIRPORT AFTER SHOCK
MOVI PALCNO,A11
JSRP FADE_STRT
MOVI [1520H,0],A0,L
MOVE A0,@WORLDTLX,L
MOVI [912H,0],A0,L
MOVE A0,@WORLDTLY,L
MOVI PORT_MOD,A0 ;SHOW ROAD
MOVE A0,@BAKMODS,L
MOVI AIRRECT3A,A0
MOVE A0,@CURRENT,L
MOVI AIRBRECT3,A0
MOVE A0,@BCURRENT,L
CALLA KILBGND
; CLR A1
; MOVE A1,@DISPLAYON
SLEEPK 2
CALLA BGND_UD1
MOVK 2,A1
MOVI PALCNO,A0
CALLA FADEIN
MOVI PALBNO,A0 ;FADE EVERYTHING EXCEPT SCOREPAL
CALLA FB_FADEIN
CALLR PLYRS_CNTR
CALLA SETC2 ;ALWAYS START LAND MINE COLOR CYCLE
CLR A0
MOVE A0,@SHK_ON
MOVE A0,@HALT
CREATE JOYPID,JOY_UPDATE
CREATE ICONPID,SEND_ICON
;FADE IN COMPLETE
MOVI 33,A0
CALLA DOLORD
;GREED FEST
MOVK 20,A10 ;GREED FEST!
MOVI [-16,0],A9 ;Y ADD IN VALUE
CREATE0 ZONE_TXT2
CREATE ICONPID,SEND_GEMS ;TONS OF GEMS!
CLR A0
MOVE A0,@WFLG
MOVE A0,@MINE_FLG
SLEEPK 2
CALLA BGND_UD1
DIE
WTDMA SLEEP 050H
CALLA DMA_SCORE
DIE
EXSC
***************************************************************************
;GET WARP # BASED ON XPOS IN WORLD!
; MOVI 0,A2 ;PUT IN TO TEST A WARP
; JRUC NOCAN ;LCKEX
***************************************************************************
MOVE *A8(OXPOS),A0
MOVI WRPSX,A1
MOVI -1,A2
NXT INC A2
MOVE *A1+,A3,W
JRNZ NXT1
.IF DEBUG
LOCKUP
EINT
.ENDIF
;COULDN'T FIND A WARP! DEFAULT TO A WARP
MOVI 1,A2
JRUC NOCAN
NXT1 SUB A0,A3
ABS A3
SUBK 2,A3
JRHI NXT
MOVI 70,A0
CALLA RANDPER
JRNC NOCAN
LCKEX
;CAN THIS WARP TO SHOCK SCENE!
MOVE A2,@KEEP_WARP
MOVK 6,A2 ;PUT IN TO TEST A WARP
NOCAN
MOVE A2,@LOCK_NUM
MOVE @LOCK_NUM,A0
CMPI 6,A0
JRNZ CHNG09
MOVE @IRQSKYE,A0,L
MOVE A0,@RAMNO,L ;SKY COLOR
MOVK 1,A0
MOVE A0,@TAUNTOUT
CALLA INIT_SCORE ;TURNS ON REGULAR IMAGES FOR SCORES
SLEEPK 2
CLR A0
MOVE A0,@SCORE_FLAG
CREATE 3100,SCRLUP
CHNG09 MOVI WRPSND,A0
CALLA ONESNDOVR
MOVI PALDNO,A11
JSRP FADE_STRT
MOVI [200,0],A0
MOVE A0,@WORLDTLY,L
MOVE @LOCK_NUM,A0
CMPI 6,A0
JRNZ CHNG01
;FRY PLAYERS
movk 10,a0
move a0,@WORLDTLX+16
movi 960,a0
move a0,@WORLDTLY+16
JRUC CHNG2
CHNG01 CMPI 5,A0
JRNZ CHNG0
MOVI [0820H,0],A0
MOVE A0,@WORLDTLY,L
MOVI [05D0H,0],A0
MOVE A0,@WORLDTLX,L
JRUC CHNG2
CHNG0 CMPI 3,A0
JRNZ CHNG1
MOVI [200+255,0],A0
MOVE A0,@WORLDTLY,L
CHNG1
MOVI [200,0],A0
MOVE A0,@WORLDTLX,L
CHNG2
;KILL EVERYTHING BUT PLAYER STUFF
;POSITION PLAYERS IN THE MIDDLE OF THE SCREEN
;SHOW NEW BLIMP MODULE
MOVK 1,A0
MOVE A0,@SHK_ON
MOVE @LOCK_NUM,A0
SLL 5,A0
ADDI LCK_INFO,A0
MOVE *A0,A9,L
MOVE *A9+,A0,W ;GET MINE INFO
MOVE A0,@MINE_FLG
MOVE *A9+,A0,W ;GET INFO
MOVE A0,@HSTGSET
MOVE *A9+,A0,L
MOVE A0,@BAKMODS,L
;SETUP COLLISIONS FOR PLAYER AND HIS BULLETS
MOVE *A9+,A0,L
MOVE A0,@CURRENT,L
MOVE *A9+,A0,L
MOVE A0,@BCURRENT,L
MOVE *A9+,A0,L
MOVE A0,@EN_CURRENT,L ;FOR BOX COLLISIONS
MOVE *A9+,A0,L
MOVE A0,@ENEMY_RECT,L ;FOR SPAWNING
MOVE *A9+,A0,W
MOVE A0,@JUMPXY2 ;X JUMP COOR
MOVE *A9+,A0,W
MOVE A0,@WAVE ;FOR BARRELS, TO GET CORRECT TIME
MOVE *A9+,A0,L
MOVE A0,@SITLST,L ;FOR AHMED FLAME THROWERS
SLEEPK 2
CLR A1
MOVE A1,@DISPLAYON
CALLA BGND_UD1
MOVE *A9+,A10,L
JRZ BLKDN
BLK0 MOVE *A10+,A0,L
JRZ BLKDN
CALLA BLAKOUT
JRUC BLK0
BLKDN SLEEPK 2
MOVE *A9+,A0,L
MOVK 1,A1
MOVE A1,@DISPLAYON
MOVK 2,A1
PUSH A9
CALLA FADEIN
MOVI PALBNO,A0 ;FADE EVERYTHING EXCEPT SCOREPAL
CALLA FB_FADEIN
MOVE @LOCK_NUM,A0
CMPI 6,A0 ;SHOCK
JRZ NOM
CALLR PLYRS_CNTR
NOM PULL A9
MOVE *A9+,A2,W ;PLACE DOWN RANDOM LAND MINES
JRZ NOMINES
CALLA O_MINE
NOMINES
;SETUP ICON LIST FOR THIS LOCKDOWN
MOVE *A9+,A0,L
MOVE A0,@ICLIST,L
SLEEPK 30
CREATE0 DELY_BARRELS
.REF WARP_INFO
CREATE0 WARP_INFO
MOVE *A9+,A7,L
JRZ GTO0
CALLA GETPRC
GTO0 CALLA SETC2 ;ALWAYS START LAND MINE COLOR CYCLE
GTO
SLEEPK 1
MOVE @INFO_BOX,A0,L
JRNZ GTO
MOVE A0,@SHK_ON
MOVE A0,@HALT
MOVE @LOCK_NUM,A0
CMPI 6,A0
JRZ GT55
CREATE JOYPID,JOY_UPDATE
CREATE ICONPID,SEND_ICON
;FADE IN COMPLETE
MOVE @WAVE,A0
CALLA DOLORD
GT55 MOVE @KEEP_P,A9,L
CREATE0 SBOMB
CLR A0
MOVE A0,@WFLG
MOVE A0,@MINE_FLG
DIE
DELY_BARRELS
;DELAY ALL CMAN PROCS X TIME
SLEEPK 1
MOVI ACTIVE,A2,L
CNXT:
MOVE *A2,A2,L ;GET NEXT
JREQ CSC ;ALL DONE
MOVE *A2(PROCID),A4
CMPI CMAN,A4 ;MATCH?
JRZ YESDELY
CMPI shawnpid,A4 ;DELAY EGGS
JRNE CNXT ;NO
YESDELY MOVE *A2(PTIME),A4
ADDI 130+150+30+13H,A4 ;MAX TIME INFO BOX IS OUT
MOVE A4,*A2(PTIME)
JRUC CNXT
CSC
MOVI 130+150+30+13H+5,A8 ;MAX TIME INFO BOX IS OUT
CSC1 SLEEPK 1
DEC A8
JAZ SUCIDE
MOVE @INFO_BOX,A0,L
JRNZ CSC1
;INFO BOX GONE VIA BUTTON PRESS OR IT TIMED OUT
MOVI ACTIVE,A2,L
BNXT:
MOVE *A2,A2,L ;GET NEXT
JAZ SUCIDE ;ALL DONE
MOVE *A2(PROCID),A4
CMPI shawnpid,A4 ;DELAY EGGS
JRZ YESDELY2
CMPI CMAN,A4 ;MATCH?
JRNE BNXT ;NO
YESDELY2
MOVE *A2(PTIME),A4
SUB A8,A4 ;TIME LEFT FOR INFO BOX TO BE OUT!
MOVE A4,*A2(PTIME)
JRUC BNXT
LCK_INFO
.LONG LCK1,LCK2,LCK3,LCK4,LCK5,LCK6,LCK7,LCK8,LCK9,LCK9
LCK9 ;LOWER RIGHT OF DESERT
.WORD 0 ;MINES ON FLAG FOR BGND DRIVER
.WORD 0 ;HSTG SET
.LONG LOCKJ2_MOD ;MOD NAME
.LONG 0 ;PLAYER BUMP RECTANGLE
.LONG 0 ;PLAYER BULLET RECTANGLES
.LONG 0 ;NO GRUNT BOX CHECKS
.LONG LK1SPWN ;SPAWN POINTS FOR GRUNTS
.WORD 0 ;JUMPXY2
.WORD 42 ;WAVE
.LONG SIT1 ;AHMED FLAME THROWER CORNERS
.LONG BLACK1 ;LIST OF PALS TO BLACK OUT
.LONG PALCNO ;PALS TO FADEIN
.WORD 1 ;# OF LAND MINES RANDOMLY PLACED
.LONG ICN6 ;ICON LIST FOR THIS LOCKDOWN
.LONG SPEC3A ;SPECIAL STUFF FOR THIS LOCKDWN
LCK8 ;GUN PIT WARP
.WORD 0 ;MINES ON FLAG FOR BGND DRIVER
.WORD 1 ;HSTG SET 0=BALL CHAIN, 1=GOOB
.LONG LOCKH_MOD ;MOD NAME
.LONG 0 ;PLAYER BUMP RECTANGLE
.LONG 0 ;PLAYER BULLET RECTANGLES
.LONG 0 ;NO GRUNT BOX CHECKS
.LONG 0 ;SPAWN POINTS FOR GRUNTS
.WORD 0 ;JUMPXY2
.WORD 28 ;WAVE
.LONG 0 ;AHMED FLAME THROWER CORNERS
.LONG 0 ;LIST OF PALS TO BLACK OUT
.LONG PALCNO2 ;PALS TO FADEIN
.WORD 0 ;# OF LAND MINES RANDOMLY PLACED
.LONG ICN2 ;ICON LIST FOR THIS LOCKDOWN
.LONG SPEC8 ;SPECIAL STUFF FOR THIS LOCKDWN
LCK7 ;SHOCK WARP
.WORD 0 ;MINES ON FLAG FOR BGND DRIVER
.WORD 0 ;HSTG SET 0=BALL CHAIN, 1=GOOB
.LONG frypbg_t ;MOD NAME
.LONG 0 ;PLAYER BUMP RECTANGLE
.LONG 0 ;PLAYER BULLET RECTANGLES
.LONG 0 ;NO GRUNT BOX CHECKS
.LONG 0 ;SPAWN POINTS FOR GRUNTS
.WORD 0 ;JUMPXY2
.WORD 27 ;WAVE
.LONG 0 ;AHMED FLAME THROWER CORNERS
.LONG 0 ;LIST OF PALS TO BLACK OUT
.LONG PALENO ;PALS TO FADEIN
.WORD 0 ;# OF LAND MINES RANDOMLY PLACED
.LONG ICN7 ;ICON LIST FOR THIS LOCKDOWN
.LONG SPEC6 ;SPECIAL STUFF FOR THIS LOCKDWN
LCK6 ;LONG JET TARMAC IN BIGFORT
.WORD 0 ;MINES ON FLAG FOR BGND DRIVER
.WORD 0 ;HSTG SET 0=BALL CHAIN, 1=GOOB
.LONG LOCKZ_MOD ;MOD NAME
.LONG 0 ;PLAYER BUMP RECTANGLE
.LONG 0 ;PLAYER BULLET RECTANGLES
.LONG 0 ;NO GRUNT BOX CHECKS
.LONG 0 ;SPAWN POINTS FOR GRUNTS
.WORD 0 ;JUMPXY2
.WORD 27 ;WAVE
.LONG 0 ;AHMED FLAME THROWER CORNERS
.LONG BLACK3 ;LIST OF PALS TO BLACK OUT
.LONG PALCNO ;PALS TO FADEIN
.WORD 0 ;# OF LAND MINES RANDOMLY PLACED
.LONG ICN7 ;ICON LIST FOR THIS LOCKDOWN
.LONG SPEC5 ;SPECIAL STUFF FOR THIS LOCKDWN
LCK5 ;AFTER JETS FLY OVER AT RIGHT SIDE OF AIRPORT
.WORD 0 ;MINES ON FLAG FOR BGND DRIVER
.WORD 1 ;HSTG SET 0=BALL CHAIN, 1=GOOB
.LONG LOCKC_MOD ;MOD NAME
.LONG LK5RECT ;PLAYER BUMP RECTANGLE
.LONG LK5BRECT ;PLAYER BULLET RECTANGLES
.LONG LK5GRECT ;NO GRUNT BOX CHECKS
.LONG LK5SPWN ;SPAWN POINTS FOR GRUNTS
.WORD 0 ;JUMPXY2
.WORD 26 ;WAVE
.LONG SIT4 ;AHMED FLAME THROWER CORNERS
.LONG BLACK3 ;LIST OF PALS TO BLACK OUT
.LONG PALCNO3 ;PALS TO FADEIN
.WORD 8 ;# OF LAND MINES RANDOMLY PLACED
.LONG ICN8 ;ICON LIST FOR THIS LOCKDOWN
.LONG SPEC4 ;SPECIAL STUFF FOR THIS LOCKDWN
LCK4 ;FLESH FEAST SUPER WARP - JEEPS
.WORD 0 ;MINES ON FLAG FOR BGND DRIVER
.WORD 0 ;HSTG SET
.LONG LOCKJ_MOD ;MOD NAME
.LONG 0 ;PLAYER BUMP RECTANGLE
.LONG 0 ;PLAYER BULLET RECTANGLES
.LONG 0 ;NO GRUNT BOX CHECKS
.LONG LK1SPWN ;SPAWN POINTS FOR GRUNTS
.WORD 0 ;JUMPXY2
.WORD 23 ;WAVE
.LONG SIT1 ;AHMED FLAME THROWER CORNERS
.LONG BLACK1 ;LIST OF PALS TO BLACK OUT
.LONG PALCNO ;PALS TO FADEIN
.WORD 5 ;# OF LAND MINES RANDOMLY PLACED
.LONG ICN2 ;ICON LIST FOR THIS LOCKDOWN
.LONG SPEC3 ;SPECIAL STUFF FOR THIS LOCKDWN
LCK3 ;NEAR TRIPLE GUNNER
.WORD 0 ;MINES ON FLAG FOR BGND DRIVER
.WORD 1 ;HSTG SET
.LONG LOCKD_MOD ;MOD NAME
.LONG LK3RECT ;PLAYER BUMP RECTANGLE
.LONG LK3BRECT ;PLAYER BULLET RECTANGLES
.LONG LK3GRECT ;GRUNT BOX CHECKS
.LONG LK2SPWN ;SPAWN POINTS FOR GRUNTS
.WORD 0 ;JUMPXY2
.WORD 22 ;WAVE
.LONG SIT3 ;AHMED FLAME THROWER CORNERS
.LONG BLACK1 ;LIST OF PALS TO BLACK OUT
.LONG PALCNO3 ;PALS TO FADEIN
.WORD 4 ;# OF LAND MINES RANDOMLY PLACED
.LONG ICN2 ;ICON LIST FOR THIS LOCKDOWN
.LONG SPEC2 ;SPECIAL STUFF FOR THIS LOCKDWN
LCK2 ;LOWER LEFT DESERT AREA
.WORD 1 ;MINES ON FLAG FOR BGND DRIVER
.WORD 0 ;HSTG SET
.LONG LOCKB_MOD ;MOD NAME
.LONG 0 ;PLAYER BUMP RECTANGLE
.LONG 0 ;PLAYER BULLET RECTANGLES
.LONG 0 ;NO GRUNT BOX CHECKS
.LONG LK2SPWN ;SPAWN POINTS FOR GRUNTS
.WORD 0 ;JUMPXY2
.WORD 21 ;WAVE
.LONG SIT1 ;AHMED FLAME THROWER CORNERS
.LONG BLACK2 ;LIST OF PALS TO BLACK OUT
.LONG PALCNO2 ;PALS TO FADEIN
.WORD 0 ;# OF LAND MINES RANDOMLY PLACED
.LONG ICN2 ;ICON LIST FOR THIS LOCKDOWN
.LONG 0 ;SPECIAL STUFF FOR THIS LOCKDWN
LCK1 ;MIDDLE OF MINE FIELD WARP TO JEEPS/BTR60 LOCKDOWN
.WORD 0 ;MINES ON FLAG FOR BGND DRIVER
.WORD 1 ;HSTG SET
.LONG LOCKA_MOD ;MOD NAME
.LONG LK1RECT ;PLAYER BUMP RECTANGLE
.LONG LK1BRECT ;PLAYER BULLET RECTANGLES
.LONG 0 ;NO GRUNT BOX CHECKS
.LONG LK1SPWN ;SPAWN POINTS FOR GRUNTS
.WORD 588 ;JUMPXY2
.WORD 20 ;WAVE
.LONG SIT1 ;AHMED FLAME THROWER CORNERS
.LONG BLACK1 ;LIST OF PALS TO BLACK OUT
.LONG PALCNO ;PALS TO FADEIN
.WORD 4 ;# OF LAND MINES RANDOMLY PLACED
.LONG ICN2 ;ICON LIST FOR THIS LOCKDOWN
.LONG SPEC1 ;SPECIAL STUFF FOR THIS LOCKDWN
BLACK1 .LONG BGFRTP,GRNDP,CANDB,UFLP,JEEPP2,0
BLACK2 .LONG BULLET,PPLP,DESRTPL,GRNDP,0
BLACK3 .LONG PPLP,BULLET,SPYDERP1,GRNDP,UPAL,0
TUNE4 .word >f3fe,10,>8007,0 ;Rackup tune
SPEC8
MOVI TUNE4,A0
CALLA ONESNDOVR
CALLR STRT_G ;CYCLE GOOB POOL
MOVI PONDPID,A0 ;POND PROC
MOVI 7*60,A2
CALLA KOP_1C ;KNOCK OUT FOR THIS LONG
SPEC8B SLEEP 60
MOVI T72PID,A0
CLR A1
NOT A1
CALLA EXISTP
JRNZ SPEC8B
;GUNNERS DEAD
SLEEP 15*60
CREATE WARPPID,GOBACK
* Z BIT SET = NO MATCH, A0 = 0
DIE
SPEC6
CREATE0 WITR
CLR A8 ;PLAYER FRY
jauc fry_plyrs
WITR SLEEP 120
MOVI ICONPID,A0
CALLA KIL1C
MOVI CMAN,A0
CALLA KIL1C
MOVI CLSNEUT|TYPICON,A0
MOVI 0FF00H,A1 ;DEL ANY ICONS SITTING AROUND
CALLA KILOBJ
MOVE @KEEP_P,A9,L
CREATE0 SBOMB
DIE
SPEC5
; MOVE @PLYROBJS,A0,L
; JRZ JU2
; MOVI P1DATA+BMB_CNT,A0
; MOVK 15,A10
;SP5 CALLA ADDBMB
; DSJS A10,SP5
;JU2 MOVE @PLYROBJS+32,A0,L
; JRZ NEWS1
; MOVI P2DATA+BMB_CNT,A0
; MOVK 15,A10
;SP5A CALLA ADDBMB
; DSJS A10,SP5A
NEWS1
CLR A9 ;A9=0 FOR UP, 1 FOR RGT
MOVE A9,@JET_KILLS,L
MOVE A9,@GET_AWAY
MOVE A9,@CRSRAM,L
CREATE ARWPID,ONARRW ;TURN ON UP ARROW
CREATE FUTUREPID,AOF ;ARROW OFF AFTER A TIME
SLEEP 60
MOVI PATHAIR3,A10 ;INDICATES NEW SCROLL WITH SCRL TABLE
MOVE @WORLDTLY,A9,L
SRL 16,A9
ADDI 180,A9 ;A8=0 MEANS NOT CHECKING FOR X TARGET
CLR A8
CREATE TARGPID,TARGET ;A9=Y TARGET LINE TO TRIGGER SCROLL
MOVK 13,A0
MOVE A0,@CTOTAL,W ;18 =REACTOR, 11 FOR DISH,13 FOR JET
SLEEP 5*60
CREATE FUTUREPID,TUFFMINE
SLEEPK 3
MOVK 27,A0
MOVE A0,@WAVE ;FOR JET DETECTION
DIE
PATHAIR3
.WORD 1,472H,8,400H,8,5A0H,18,1,1,0A9H,0
SPEC4
;CYCLE BACKGROUND WALLS
MOVI UPAL,A8 ;PAL NAME
MOVI PALTMP,A9 ;RAM AREA
MOVI [50,63],A10 ;BEGIN/END COLOR #
MOVK 7,A11 ;RATE IN TICKS
CREATE CYCPID,COLCYC ;COLOR CYCLER ON
CREATE ICONPID,SEND_ICON
CALLA JEEPCYC ;CYCLE JEEP TIRES
CLR A0
MOVE A0,@SKIPR_DN
SP4A SLEEP 60
MOVE @SKIPR_DN,A0
JRZ SP4A
MOVK 9,A0
CALLA DOLORD
DIE
TUNE5 .WORD >F3F0,1,>800A,0 ;WARP MUSIC
SPEC3
MOVI TUNE5,A0
CALLA ONESNDOVR
CREATE0 DOUBLE ;TWO SETS OF ICONS!
CALLR STRT_G ;CYCLE GOOB POOL
MOVI PONDPID,A0 ;POND PROC
MOVI 13*60,A2
CALLA KOP_1C ;KNOCK OUT FOR THIS LONG
SLEEP 2*60*60-15*60-47*60 ;LENGTH OF WAVE BEFORE JEEPS START
MOVI 43CH,A10
SPEC3B
SLEEPK 1
;PLAYERS CAN GET DRAGGED OFF BOTTOM!
.REF CK_BTMSD
CALLA CK_BTMSD ;CHECK FOR PLAYERS DRAGGING AT BOTM
JRC SPEC3B
MOVE @WORLDTLY,A0,L
SUBI [0,04000H],A0
MOVE A0,@WORLDTLY,L
CALLA MAYBE_UD1
DSJ A10,SPEC3B
MOVE A10,@JET_KILLS,L ;FOR JEEPS ESCAPED
MOVE A10,@GET_AWAY
CALLA JEEPCYC ;CYCLE JEEP TIRES
MOVI ICN6,A0 ;NO WEAPONS
MOVE A0,@ICLIST,L
MOVK SUBSPDG1,A9 ;BULLET SUBTYPE
CREATE FIXPID,FIXGUNS
SLEEP 120
;HERE COME JEEPS
MOVK 14,A10 ;KILL ALL FOR DOUBLE
MOVI [-16,0],A9 ;Y ADD IN VALUE
CREATE0 ZONE_TXT2
DIE
SPEC3A
MOVI TUNE5,A0
CALLA ONESNDOVR
CREATE0 DOUBLE ;TWO SETS OF ICONS!
CLR A0
MOVE A0,@JET_KILLS,L ;FOR JEEPS ESCAPED
MOVE A0,@GET_AWAY
CALLA JEEPCYC ;CYCLE JEEP TIRES
MOVI ICN6,A0 ;NO WEAPONS
MOVE A0,@ICLIST,L
MOVK SUBSPDG1,A9 ;BULLET SUBTYPE
CREATE FIXPID,FIXGUNS
SLEEP 30
SPEC3AA SLEEPK 10
MOVE @INFO_BOX,A0
JRNZ SPEC3AA
;HERE COME JEEPS
MOVK 14,A10 ;KILL ALL FOR DOUBLE
MOVI [-16,0],A9 ;Y ADD IN VALUE
CREATE0 ZONE_TXT2
DIE
SPEC2
MOVI TUNE4,A0
CALLA ONESNDOVR
CALLA JEEPCYC ;CYCLE JEEP TIRES
DIE
SPEC1
CALLA STRT_FORT ;FORT CYCLE
CALLA JEEPCYC ;CYCLE JEEP TIRES
GTO1 SLEEPK 1
MOVE @INFO_BOX,A0,L
JRNZ GTO1
CREATE0 POL2 ;BRING ON SIDE POOL
CALLR STRT_G ;CYCLE GOOB POOL
DIE
PLYRS_CNTR:
;PLACE PLAYERS IN CENTER OF SCREEN
MOVI SCRPID,A0
CALLA KIL1C ;GET RID OF RUNNING IN SCRIPT
MOVE @WORLDTLY+16,A4
ADDI 127,A4
MOVI 180,A6
move @WAVE,a0
cmpi 40,a0
jrne pc20
addk 5,a6 ;X
addi 59,a4 ;Y
pc20
MOVK 2,A5
MOVE @PLYRPRCS,A0,L
JRZ PS2
MOVE @DEATHS,A1
BTST 0,A1
JRZ PS2A
MOVI 680,A6
PS2A
;PLACE DOWN FREE MAN
MOVE *A0(TSO_PTR),A1,L
MOVE *A0(LEG_PTR),A2,L
MOVE @WORLDTLX+16,A3
ADD A6,A3
MOVE A3,*A1(OXPOS)
MOVE A3,*A2(OXPOS)
MOVE A4,*A1(OYPOS)
MOVE A4,*A2(OYPOS)
MOVE A5,*A0(P_DIR)
MOVE @AFTR_WRP,A0
JRNZ PS2
MOVE @START,A0
CMPI 11,A0
JRZ PS2
MOVE @WAVE,A0
SUBI 33,A0
JRZ PS2
; MMTM SP,A4,A5
CLR A8
CREATE FUTUREPID,BONUS_MAN
; MMFM SP,A4,A5
PS2
MOVI 220,A6
move @WAVE,a0
cmpi 40,a0
jrne pc50
subk 13,a6
pc50 MOVE @PLYRPRCS+32,A0,L
JRZ PSE
MOVE @DEATHS,A1
BTST 1,A1
JRZ PSE2
MOVI 620,A6
PSE2
;PLACE DOWN FREE MAN
MOVE *A0(TSO_PTR),A1,L
MOVE *A0(LEG_PTR),A2,L
MOVE @WORLDTLX,A3,L
SRL 16,A3
ADD A6,A3
MOVE A3,*A1(OXPOS)
MOVE A3,*A2(OXPOS)
MOVE A4,*A1(OYPOS)
MOVE A4,*A2(OYPOS)
MOVE A5,*A0(P_DIR)
MOVE @AFTR_WRP,A0
JRNZ PSE
MOVE @START,A0
CMPI 11,A0
JRZ PSE
MOVE @WAVE,A0
SUBI 33,A0
JRZ PSE
MOVK 1,A8
CREATE FUTUREPID,BONUS_MAN
PSE
CLR A0
MOVE A0,@DEATHS
RETS
BONUS_MAN
MOVE @WORLDTLY,A1,L
ADDI [187,0],A1
MOVE @WORLDTLX,A0,L
SLL 5,A8
ADDI XOV,A8
MOVE *A8,A2,L
ADD A2,A0
MOVI PLAYER,A2
MOVI 71,A3
MOVI DMAWNZ|M_PIXSCAN,A4
MOVI CLSNEUT|TYPICON|SUBMAN,A5
CLR A6
CLR A7
CALLA BEGINOBJ2
; CLR A0
; MOVE A0,*A8(OPLINK),L
BM SLEEP 07FFFH ;KEEP THIS
JRUC BM
XOV .LONG [177,0],[217,0]
TXTSND1 .WORD >F3F7,>8,>80AE,0
CM2O
MOVK 1,A0
MOVE A0,@AFTR_WRP ;NO FREE MAN
MOVK 6,A0
JRUC CM2OX
CM2OZ MOVK 5,A0
CM2OX MOVE A0,@START
MOVK 1,A0
MOVE A0,@HALT
MOVE A8,*A13(PDATA+32),L ;SPINNING DISC IMG
MOVE *A8(OFLAGS),A0
ORI M_NOCOLL,A0
MOVE A0,*A8(OFLAGS)
JRUC YESPWRD
CM2
; MOVK 1,A0
; MOVE A0,@HALT
CREATE0 SBOMB
CREATE0 SPREAD
MOVI TXTSND1,A0
CALLA ONESND
MOVE A8,*A13(PDATA+32),L ;KEEP DISC IMG PNTR
CALLR KILJOY
SLEEPK 8
CALLR STOPPLYR
.REF R_U_SURE
JSRP R_U_SURE
MOVE A11,A11
JRNZ IDO ;I HAVE PASSWORD
;NO PASSWORD
MOVI WHAWHA,A0
CALLA ONESNDOVR
MOVE *A13(PDATA+32),A8,L ;KEEP DISC IMG PNTR
MOVI CLSDEAD,A0
MOVE A0,*A8(OID)
CREATE JOYPID,JOY_UPDATE
CLR A0
MOVE A0,@HALT
DIE
WHAWHA .WORD >FBEE,90,>8088,0 ;WHAWHA
IDO
; CALLR STOPPLYR
MOVE @KEEP_P,A9,L
MOVE *A9(OPLINK),A10,L
movi AUDPWWARPSO,a0 ;Stepped on
calla AUD1
MOVE *A10(PNUM),A0
MOVE A0,@WARPOUT
; MOVE *A9(PNUM),A0
; MOVE A0,@WARPOUT
; SLEEP 28H
MOVK 1,A0
MOVE A0,@HALT
CREATE JOYPID,JOY_UPDATE
PUSH A9
MOVI WARPP,A8 ;PAL NAME
MOVI PALTMP,A9 ;RAM AREA
MOVI [19,28],A10 ;BEGIN/END COLOR #
MOVK 6,A11 ;RATE IN TICKS
CREATE CYCPID,COLCYC ;COLOR CYCLER ON
MOVE A0,*A13(PDATA+64),L
PULL A9
MOVI SLIDEIN,A0
CALLA ONESND
MOVI WRP,A14
CALLA DO_ALL_STUFF
CALLA ADJSTWTL
MOVE A0,A8
MOVI 01AH,A11
WOUT SLEEPK 1
MOVE *A8(OYPOS),A0
ADDK 5,A0
MOVE A0,*A8(OYPOS)
DSJ A11,WOUT
CREATE0 INSTRUCT
CREATE0 WTIME
CREATE0 WARW
MOVE A0,A10
CREATE0 DIGITS
CLR A0
MOVE A0,@WORDS+16,L
MOVE A0,@WORDS+48,L
MOVK 1,A0
MOVE A0,@WORDS,W ;FIRST LETTER (A)
WSL SLEEPK 1
MOVE @WORDS+4*16,A0
JRZ WSL
MOVK 3,A0 ;NO BOMBS TO BE DROPPED
MOVE A0,@WARPOUT
;ANALYZE PASSWORD
MOVI PASWRDS,A0
MOVE A0,A4
MOVK 1,A6
CKA MOVI WORDS,A1
MOVK 4,A5
CKB MOVB *A0,A2
ADDK 8,A0
CMPI 0,A2
JRZ BADPWD
MOVE *A1+,A3
ADDK 20H,A3
CMPI 20H,A3
JRZ CKC
ADDK 020H,A3
CKC CMP A2,A3
JRNZ NXTP
DSJ A5,CKB
;A HIT
MOVE A6,@START
movi AUDPWWARPOK,a0 ;Good
calla AUD1
JRUC YESPWRD
NXTP ADDK 32,A4
MOVE A4,A0
INC A6
JRUC CKA
KILJOY MOVI JOYPID,A0
; CLR A1
; NOT A1
JAUC KIL1C
STOPPLYR
MOVE *A9(OPLINK),A10,L
MOVE *A10(STICK),A2,L
CLR A0
MOVE A0,*A2,W
MOVE *A10(LEG_PTR),A2,L ;GET LEG INFO
;STOP PLAYER FROM FLOATING
MOVE A0,*A2(OXVEL),L
MOVE A0,*A2(OYVEL),L
MOVE A0,*A9(OXVEL),L
MOVE A0,*A9(OYVEL),L
RETS
;BAD PASSWORD
;TURN ON BIG EXPLOSIONS OVER PLAYER
;DELETE SPINNING DISC, AND ITS PROC
;WHEN CLEAR, SPIN PLAYER INTO FLAME DEATH
;TAKE AWAY WARP PANEL
;UNHALT
;RUN A NEW PLAYER OUT
;
YESPWRD
MOVK 2,A0
MOVE A0,@ARWOFF
;GET RID OF BTR60
MOVI FUTUREPID,A0
CALLA KIL1C
;SCROLL PROCS
MOVI FLGPID,A0
CALLA KIL1C
MOVI PONDPID,A0
CALLA KIL1C
MOVI TARGPID,A0
CALLA KIL1C
MOVI DELPID,A0
CALLA KIL1C
MOVI LORDPID,A0
CALLA KIL1C
MOVI WARPPID,A0
CALLA KIL1C
;SET OFF SMART BOMB
;A9=PLYR IMG PTR WHO GOT ME
CREATE0 SBOMB
MOVE @START,A0
CMPI 11,A0
JRZ YRT
PUSH A8
CALLA INIT_SCORE ;TURNS ON REGULAR IMAGES FOR SCORES
PULL A8
SLEEPK 2
CLR A0
MOVE A0,@SCORE_FLAG
MOVE @START,A0
CMPI 10,A0
JRNZ YRT
;SHOCK WARP
CREATE 3100,SCRLUP
MOVI CMAN,A0
CALLA KIL1C
MOVI ICONPID,A0
CALLA KIL1C
YRT
MOVI WRPSND,A0
CALLA ONESNDOVR
;CHECKER BOARD WIPE
CLR A0
MOVE A0,@SQR_FLG
CALLA SQUARES
SLEEPK 13H
CALLA ERASE_TXT
GT1 SLEEPK 1
MOVE @SQR_FLG,A0
JRZ GT1
;SQUARES NOW COVER ENTIRE SCREEN
MOVE @START,A0
CMPI 11,A0
JRZ YRT0
MOVE *A13(PDATA+32),A0,L ;SPINNING DISC IMG
MOVE *A0(OXPOS),A1
CALLA DELOBJ
CMPI 251H,A1 ;SHORTCUT
JRZ YRT0
CMPI 54H-9,A1 ;SHORTCUT
JRZ YRT0
CALLA DELOBJA8 ;DELETE WARP PANEL
MOVE *A13(PDATA+64),A0,L ;COLOR CYCLER FOR WARP PANEL
CALLA KILL
;TAKE AWAY ALL PASSWORD DIGITS AND TIMER DIGITS
MOVI 0FFH,A0
MOVE A0,@WORDS+4*16 ;TAKES AWAY PASSWRD LETTERS
YRT0
;GET RID OF MAP BUTTON IF PRESENT
MOVI MAPPID,A0
CLR A1
NOT A1
CALLA EXISTP
JRZ STR
CALLA GETA8
CALLA KILL
CALLA DELOBJA8
STR MOVI FUTRPID,A0 ;KIL BTR60 WAITING FOR ME
CALLA KIL1C
CALLA KILBGND ;KILL ALL BACKGROUND
;NOW DISPLAY NEW WORLD HE HAS JUST WARPED TO
MOVE @START,A0
CMPI 3,A0
JRNZ WRPA
;DO THIS FOR START OF GAME AT GATES OF REACTOR FACILITY
CALLA STRTA
MOVI ( 5 *32*32)+( 5 *32)+( 5 ),A1 ;GREY
MOVE A1,@IRQSKYE
SLEEPK 2
MOVI [0E4H,0],A3
MOVI [127EH,0],A5
MOVE @WORLDTLY,A4,L
SUB A4,A5
MOVI [0E08H,0],A4 ;F23
SUB A5,A4
CALLR MOVESQRS
MOVI [0476H,0],A0 ;35B
MOVE A0,@WORLDTLY,L
CLR A8 ;A8=0 MEANS NOT CHECKING FOR X TARGET
MOVE A8,@WORLDTLX,L
MOVE @WORLDTLY,A9,L
SRL 16,A9
ADDI 130,A9 ;A9=Y TARGET LINE TO TRIGGER SCROLL
CLR A10
CREATE TARGPID,TARGET
CREATE FUTUREPID,SEND_TOP ;SEND FIRST ENEMIES
MOVK 1,A0
CALLA DOLORD
WRPDN
;EVERY WARP JUMPS IN HERE TO FINISH IT OFF
MOVE @START,A0
CMPI 10,A0
JRZ WR00
CALLA INIT_SCORE ;TURNS ON REGULAR IMAGES FOR SCORES
WR00 CALLA BGND_UD1
SLEEPK 1
CALLA BGND_UD1
SLEEPK 1
CALLA BGND_UD1
CALLR KILJOY
MOVI CYCPID,A0 ;ALL COLOR CYCLES OFF AFTER WARP
CALLA KIL1C
MOVI POWPID,A0 ;ALL COLOR CYCLES OFF AFTER WARP
CALLA KIL1C
CLR A0
MOVE A0,@CYCLIFE
MOVE A0,@HALT
MOVE A0,@RUNIN,W
MOVE @START,A0
CMPI 10,A0
JRZ GT2
CMPI 11,A0
JRNZ GT28
CALLR PLYRS_CNTR
JRUC GT2
GT28 MOVE @STATUS,A2
CMPI 3,A2
JRZ SAZ
MOVE A2,A8
DEC A2
SLL 5,A2
ADDI PLYRPRCS,A2,L
MOVE *A2,A2,L
CALLA SETPXY1 ;1 OR 2
MOVE *A2(TSO_PTR),A3,L
MOVE *A2(LEG_PTR),A4,L
MOVE A0,*A3(OXVAL),L
MOVE A1,*A3(OYVAL),L
MOVE A0,*A4(OXVAL),L
MOVE A1,*A4(OYVAL),L
MOVE @RUNIN,A10 ;A10=0 FOR COME IN FROM BOTTOM
CREATE SCRPID,SCRIPTPLAY
JRUC GT2
INSTRUCT
;TURN ON INSTRUCTIONS FOR WARP PANEL
MOVI INST1,A8 ;OBJECTIVE 1
MOVI [0F0H-10,0200],A9 ;SCRN Y/X
MOVI 3B3BH,A6 ;YELLOW
MOVI RD7FONT,A11 ;FONT TABLE
CLR A0
MOVE A0,@WRLD
MOVK 1,A10 ;Y,X SPACING BETWEEN CHARCTERS
CLR A0
JSRP STRCNRMO
MOVI INST2,A8 ;OBJECTIVE 1
MOVI [00F0H,0200],A9 ;SCRN Y/X
MOVI 3B3BH,A6 ;YELLOW
CLR A0
JSRP STRCNRMO
DIE
INST1 .BYTE "LEFT JOYSTICK MOVES THE ARROW",0
INST2 .BYTE "RIGHT JOYSTICK OR BUTTON SELECTS THE LETTER",0
.EVEN
MOVESQRS
CLR A1
NOT A1
AGN MOVI CLSNEUT|TYPTEXT|SUBWNDW,A0
CALLA EXISTOBJ
JRZ EX
MOVE *A0(OXVAL),A2,L
SUB A3,A2
MOVE A2,*A0(OXVAL),L
MOVE *A0(OYVAL),A2,L
SUB A4,A2
MOVE A2,*A0(OYVAL),L
CLR A2
MOVE A2,*A0(OID)
JRUC AGN
EX RETS
SAZ MOVK 1,A8
MOVE @RUNIN,A10 ;A10=0 FOR COME IN FROM BOTTOM
CREATE SCRPID,SCRIPTPLAY
MOVE @PLYRPRCS,A2,L
CALLA SETPXY1
MOVE *A2(TSO_PTR),A3,L
MOVE *A2(LEG_PTR),A4,L
MOVE A0,*A3(OXVAL),L
MOVE A1,*A3(OYVAL),L
MOVE A0,*A4(OXVAL),L
MOVE A1,*A4(OYVAL),L
MOVK 2,A8
CREATE SCRPID,SCRIPTPLAY
MOVE @PLYRPRCS+32,A2,L
CALLA SETPXY2
MOVE *A2(TSO_PTR),A3,L
MOVE *A2(LEG_PTR),A4,L
MOVE A0,*A3(OXVAL),L
MOVE A1,*A3(OYVAL),L
MOVE A0,*A4(OXVAL),L
MOVE A1,*A4(OYVAL),L
;CHECKER BOARD UNWIPE
GT2 SLEEPK 2
MOVE @SQR_FLG,A0
JRNZ GT2
;ALL SQUARES GONE!
MOVE @START,A0
CMPI 10,A0
JRZ GT22
CALLA DMA_SCORE
CREATE JOYPID,JOY_UPDATE
CALLA SETC2 ;START LAND MINE COLOR CYCLE
GT22 CLR A0
MOVE A0,@WARPOUT
JSRP DELSTUF ;1/11/92
CALLA STOPOBJS
MOVE @START,A0
CMPI 11,A0
JAZ FROMSHK
DIE
ahkbang .word >f9F7,80,>80ef,0 ;^ angry
BADPWD MOVE *A13(PDATA+32),A10,L ;SPINNING DISC IMG
CREATE0 JSND0
CREATE0 KM2B
CLR A0
MOVE A0,@HALT
SLEEPK 10
MOVE *A13(PDATA+32),A0,L ;SPINNING DISC IMG
CALLA DELOBJ
MOVE *A13(PDATA),A0,L ;PROC SPINNING THAT DISC
CALLA KILL
SLEEPK 4
;START PLAYER SPINNING!
MOVE *A9(OPLINK),A0,L
MOVE A0,A7
PUSH A8
CLR A2
CALLA WARP_KIL ;KILL PLAYER
PULL A8
SLEEPK 20
;TAKE AWAY ALL PASSWORD DIGITS AND TIMER DIGITS
MOVI 0FFH,A0
MOVE A0,@WORDS+4*16 ;TAKES AWAY PASSWRD LETTERS
CREATE0 JSND
MOVI SLIDEIN,A0
CALLA ONESND
MOVI 1AH,A11
WOUT2 SLEEPK 1
MOVE *A8(OYPOS),A0
SUBK 5,A0
MOVE A0,*A8(OYPOS)
DSJ A11,WOUT2
CALLA DELOBJA8 ;DELETE WARP PANEL
MOVE *A13(PDATA+64),A0,L ;COLOR CYCLER FOR WARP PANEL
CALLA KILL
CALLA ERASE_TXT
CLR A0
MOVE A0,@WARPOUT
DIE
JSND0
JSRP BOOMS
DIE
JSND SLEEP 90
MOVI ahkbang,a0
calla ONESND
DIE
WRPA
;NEXT WARP CHECK
CMPI 4,A0
JRNZ WRPB
;WARP TO DESERT 1ST LOCKDOWN
SLEEPK 2
CLR A3
MOVI [127FH,0],A5
MOVE @WORLDTLY,A4,L
SUB A4,A5
MOVI [026EH,0],A4
SUB A5,A4
CALLR MOVESQRS
MOVI [0100FH,0],A0
MOVE A0,@WORLDTLY,L
MOVI DSRTONE_MOD,A0 ;SHOW FORT MODULE
MOVE A0,@BAKMODS,L
MOVK 6,A9 ;6=1 PIXEL OF SCROLL!
MOVE A9,@TARGET_NUM ;FIRST TARGET FOR SCROLL
MOVI 252,A0
MOVE @WORLDTLY,A9,L
SRL 16,A9
ADD A0,A9 ;A9=Y TARGET LINE TO TRIGGER SCROLL
CLR A8 ;A8=0 MEANS NOT CHECKING FOR X TARGET
CLR A10
CREATE TARGPID,TARGET
JRUC WRPDN
WRPB
;NEXT WARP CHECK
CMPI 5,A0
JRNZ WRPC
;WARP TO DESERT 2ND LOCKDOWN
SLEEPK 2
MOVI [127FH,0],A5
MOVE @WORLDTLY,A4,L
SUB A4,A5
MOVI [0800H,0],A4
SUB A5,A4
MOVI [0C5H,0],A3
CALLR MOVESQRS
MOVI [0A7EH,0],A0
MOVE A0,@WORLDTLY,L
MOVI [01FH,0],A0
MOVE A0,@WORLDTLX,L
MOVI DSRTONE_MOD,A0 ;SHOW FORT MODULE
MOVE A0,@BAKMODS,L
MOVK 12,A0
MOVE A0,@WAVE ;1ST LOCKDOWN
MOVI 252,A0
MOVE @WORLDTLY,A9,L
SRL 16,A9
ADD A0,A9 ;A9=Y TARGET LINE TO TRIGGER SCROLL
CLR A8 ;A8=0 MEANS NOT CHECKING FOR X TARGET
MOVI PATHCA,A10 ;INDICATES NEW SCROLL WITH SCRL TABLE
CREATE TARGPID,TARGET
JRUC WRPDN
PATHCA ;DIR,CNT
.WORD 1,1,0
WRPC
;NEXT WARP CHECK
CMPI 6,A0
JRNZ WRPD
;WARP TO START OF ORCUS
SLEEPK 2
MOVI [127FH,0],A5
MOVE @WORLDTLY,A4,L
SUB A4,A5
MOVI [0127EH,0],A4
SUB A5,A4
; MOVI [0C3H,0],A3
MOVE @WORLDTLX+16,A3
SUBI 21H,A3
SLL 16,A3
CALLR MOVESQRS
CLR A0
MOVE A0,@WORLDTLY,L
MOVI [021H,0],A0
MOVE A0,@WORLDTLX,L
MOVI DSRTNEW_MOD,A0 ;SHOW FORT MODULE
MOVE A0,@BAKMODS,L
MOVK 15,A0
MOVE A0,@WAVE ;1ST LOCKDOWN
MOVI 252,A0
MOVE @WORLDTLY,A9,L
SRL 16,A9
ADD A0,A9 ;A9=Y TARGET LINE TO TRIGGER SCROLL
CLR A8 ;A8=0 MEANS NOT CHECKING FOR X TARGET
MOVI PATHCA,A10 ;INDICATES NEW SCROLL WITH SCRL TABLE
CREATE TARGPID,TARGET
CREATE0 FIXC
JRUC WRPDN
FIXC SLEEPK 5
MOVI FLGPID,A0
CALLA KIL1C
MOVI PONDPID,A0
CALLA KIL1C
DIE
WRPD
;NEXT WARP CHECK
CMPI 7,A0
JRNZ WRPE
;WARP TO START OF ROAD #1
SLEEPK 2
MOVI [-0DEH,0],A3 ;450 DECIMAL
MOVI [127FH,0],A5
MOVE @WORLDTLY,A4,L
SUB A4,A5
MOVI [145H,0],A4
ADD A5,A4
NEG A4
CALLR MOVESQRS
CLR A0 ;1=STUCK IN GOO, 0=BALL AND CHAIN
MOVE A0,@HSTGSET
MOVE A0,@CRSRAM,L
MOVI [5060,0],A2
MOVE A2,@WORLDTLY,L
MOVI [0450,0],A0
MOVE A0,@WORLDTLX,L
MOVI ROAD_MOD,A0 ;SHOW ROAD
MOVE A0,@BAKMODS,L
MOVI ( 5 *32*32)+( 5 *32)+( 5 ),A1 ;SAND COLOR
MOVE A1,@IRQSKYE
CREATE0 FIX
MOVK 17,A0
MOVE A0,@WAVE
MOVK 1,A9 ;A9=0 FOR UP, 1 FOR RGT
CREATE ARWPID,ONARRW ;TURN ON UP ARROW
CREATE FUTUREPID,AOF ;ARROW OFF AFTER A TIME
MOVK 8,A0 ;10
MOVE A0,@CTOTAL
MOVI ICN4,A0
MOVE A0,@ICLIST,L
CREATE ICONPID,SEND_ICON ;2 ICON SETS FOR ROADWAY
CREATE ICONPID,SEND_ICON ;2 ICON SETS FOR ROADWAY
MOVK SUBSPRY,A9 ;BULLET SUBTYPE
CREATE FIXPID,FIXGUNS
JRUC WRPDN
WRPE
;NEXT WARP CHECK
CMPI 8,A0
JRNZ WRPF
SLEEPK 2
;FOR START AT END OF ROAD AFTER RACKUP
MOVI [-0B96H,0],A3 ;C7AH
MOVI [127FH,0],A5
MOVE @WORLDTLY,A4,L
SUB A4,A5
MOVI [145H,0],A4
ADD A5,A4
NEG A4
CALLR MOVESQRS
;FOR START AT END OF ROAD AFTER RACKUP
CLR A0 ;1=STUCK IN GOO, 0=BALL AND CHAIN
MOVE A0,@HSTGSET
MOVE A0,@CRSRAM,L
MOVI [5060,0],A2
MOVE A2,@WORLDTLY,L
MOVI [0C7AH,0],A0
MOVE A0,@WORLDTLX,L
MOVI ROAD_MOD,A0 ;SHOW ROAD
MOVE A0,@BAKMODS,L
MOVI ( 5 *32*32)+( 5 *32)+( 5 ),A1 ;GREY COLOR
MOVE A1,@IRQSKYE
MOVI AIRRECT1,A0
MOVE A0,@CURRENT,L
MOVI AIRBRECT1,A0
MOVE A0,@BCURRENT,L
MOVI ENAIR1,A0
MOVE A0,@EN_CURRENT,L ;FOR BOX COLLISIONS
MOVI 08000H,A0
MOVE A0,@HZSPD,L
CREATE0 DELY
MOVK 18,A0
CALLA DOLORD
CLR A9 ;A9=0 FOR UP, 1 FOR RGT
MOVE A9,@TARGET_NUM
CREATE ARWPID,ONARRW ;TURN ON UP ARROW
CREATE FUTUREPID,AOF ;ARROW OFF AFTER A TIME
MOVK 13,A0 ;10
MOVE A0,@CTOTAL
MOVI ICN1,A0
MOVE A0,@ICLIST,L
JRUC WRPDN
DELY SLEEPK 30
MOVE @WORLDTLY,A9,L
SRL 16,A9
ADDI 90,A9 ;A9=Y TARGET LINE TO TRIGGER SCROLL
CLR A8 ;A8=0 MEANS NOT CHECKING FOR X TARGET
MOVI PATHU,A10 ;INDICATES NEW SCROLL WITH SCRL TABLE
CREATE TARGPID,TARGET
DIE
PATHU ;DIR,CNT
.WORD 1,700,0
WRPF
;NEXT WARP CHECK
CMPI 9,A0
JRNZ WRPG
SLEEPK 2
;FOR START AT END OF TARMAC AREA #1 - SPIDER EGGS AROUND ME
MOVI [-0110CH,0],A3
MOVI [127FH,0],A5
MOVE @WORLDTLY,A4,L
SUB A4,A5
MOVI [65CH,0],A4
SUB A5,A4
CALLR MOVESQRS
;FOR START AT END OF AIRPLANE MISSILE AREA-ON RUNWAY
CLR A0 ;1=STUCK IN GOO, 0=BALL AND CHAIN
MOVE A0,@HSTGSET
MOVE A0,@CRSRAM,L
MOVI [0C23H,0],A2
MOVE A2,@WORLDTLY,L
MOVI [011F0H,0],A0
MOVE A0,@WORLDTLX,L
MOVI PORT_MOD,A0 ;SHOW ROAD
MOVE A0,@BAKMODS,L
MOVI ( 5 *32*32)+( 5 *32)+( 5 ),A1 ;GREY COLOR
MOVE A1,@IRQSKYE
MOVI AIRRECT3A,A0 ;TAKEN CARE OF BY SCROLLER
MOVE A0,@CURRENT,L
MOVI AIRBRECT3,A0
MOVE A0,@BCURRENT,L
MOVI 08000H,A0
MOVE A0,@HZSPD,L
MOVE @WORLDTLX,A8,L
SRL 16,A8
ADDI 300,A8 ;A9=Y TARGET LINE TO TRIGGER SCROLL
CLR A9 ;A8=0 MEANS NOT CHECKING FOR X TARGET
MOVI PATHAIR2,A10 ;INDICATES NEW SCROLL WITH SCRL TABLE
CREATE TARGPID,TARGETST
MOVK 18,A0
CALLA DOLORD
MOVK 1,A9 ;A9=0 FOR UP, 1 FOR RGT
MOVE A9,@TARGET_NUM
CREATE ARWPID,ONARRW ;TURN ON UP ARROW
CREATE FUTUREPID,AOF ;ARROW OFF AFTER A TIME
MOVK 13,A0 ;10
MOVE A0,@CTOTAL
MOVI ICN1,A0
MOVE A0,@ICLIST,L
JRUC WRPDN
WRPG
;NEXT WARP CHECK
CMPI 1,A0
JRNZ WRPH
SLEEPK 2
;STARTING GAME WHEN REACTOR IS ALREADY ON SCREEN
MOVI [0E4H,0],A3
MOVI [127FH,0],A5
MOVE @WORLDTLY,A4,L
SUB A4,A5
MOVI [127EH,0],A4
SUB A5,A4
CALLR MOVESQRS
MOVK 1,A0 ;1=STUCK IN GOO, 0=BALL AND CHAIN
MOVE A0,@HSTGSET
MOVK 1,A9
MOVE A9,@TARGET_NUM ;FIRST TARGET FOR SCROLL
CLR A0
MOVE A0,@CRSRAM,L
MOVE A0,@WORLDTLX,L
MOVI 010000H,A0
MOVE A0,@WORLDTLY,L
MOVI STRT_MOD,A0 ;SHOW FORT MODULE
MOVE A0,@BAKMODS,L
MOVE @WORLDTLY,A9,L
SRL 16,A9
ADDI 230,A9 ;A9=Y TARGET LINE TO TRIGGER SCROLL
CLR A8 ;A8=0 MEANS NOT CHECKING FOR X TARGET
CLR A10
CREATE TARGPID,TARGET
CREATE0 FORDBG
MOVI ICN1,A0
MOVE A0,@ICLIST,L
MOVI ( 5 *32*32)+( 5 *32)+( 5 ),A1 ;GREY
MOVE A1,@IRQSKYE
CREATE0 DELYC
JRUC WRPDN
DELYC SLEEP 40
CALLR STRT_G
CALLA STRT_FORT ;FORT CYCLE
DIE
WRPH
;NEXT WARP CHECK
CMPI 10,A0
JRNZ WRPI
SLEEPK 2
;SHOCK PLAYER! GO BACK TO DESERT START!
;FRY PLAYERS
MOVI [0DAH,0],A3
MOVI [127EH,0],A5
MOVE @WORLDTLY,A4,L
SUB A4,A5
MOVI [0EBFH,0],A4
SUB A5,A4
CALLR MOVESQRS
movk 10,a0
move a0,@WORLDTLX+16
movi 960,a0
move a0,@WORLDTLY+16
MOVI frypbg_t,A0
MOVE A0,@BAKMODS,L
CLR A1
MOVE A1,@IRQSKYE
MOVK 1,A0
MOVE A0,@TAUNTOUT
CLR A8 ;PLAYER FRY
CREATE0 fry_plyrs
JRUC WRPDN
WRPI
CMPI 11,A0
JRNZ WRPJ
;BACK FROM SHOCK PLAYER! GO BACK TO DESERT START!
CALLR KILL_SHOK
MOVI ICONPID,A0
CALLA KIL1C
MOVI CMAN,A0
CALLA KIL1C
MOVI CLSNEUT|TYPICON,A0
MOVI 0FF00H,A1 ;DEL ANY ICONS SITTING AROUND
CALLA KILOBJ
MOVI [-0DAH,0],A3
MOVI [-0EBFH,0],A4
CALLR MOVESQRS
MOVI 0E4H,a0
move a0,@WORLDTLX+16
movi 127DH,a0
move a0,@WORLDTLY+16
MOVI DSRTONE_MOD,A0 ;SHOW FORT MODULE
MOVE A0,@BAKMODS,L
MOVI ( 11 *32*32)+( 7 *32)+( 0 ),A1
MOVE A1,@IRQSKYE
MOVE A1,@TAUNTOUT
JRUC WRPDN
WRPJ
CMPI 12,A0
JRNZ WRPK
;FOR START AT END OF AIRPORT LOCKDOWN
SLEEPK 2
; MOVI [127FH,0],A5
; MOVE @WORLDTLY,A4,L
; SUB A4,A5
; MOVI [0800H,0],A4
; SUB A5,A4
; MOVI [0C5H,0],A3
; CALLR MOVESQRS
; MOVI [0A7EH,0],A0
; MOVE A0,@WORLDTLY,L
; MOVI [01FH,0],A0
; MOVE A0,@WORLDTLX,L
;DESERT STARTS HERE
; MOVI [127EH,0],A2
; MOVE A2,@WORLDTLY,L
; MOVI [0E4H,0],A0
; MOVE A0,@WORLDTLX,L
; MOVE *A0(OXVAL),A2,L
; SUB A3,A2
; MOVE A2,*A0(OXVAL),L
; MOVE *A0(OYVAL),A2,L
; SUB A4,A2
; MOVE A2,*A0(OYVAL),L
MOVI [127FH,0],A5
MOVE @WORLDTLY,A4,L
SUB A4,A5
MOVI [08DCH,0],A4
SUB A5,A4
MOVI [-128CH,0],A3
CALLR MOVESQRS
MOVK 1,A0 ;1=STUCK IN GOO, 0=BALL AND CHAIN
MOVE A0,@HSTGSET
CLR A0
MOVE A0,@CRSRAM,L
MOVI [09A2H,0],A2
MOVE A2,@WORLDTLY,L
MOVI [01370H,0],A0
MOVE A0,@WORLDTLX,L
MOVI PORT_MOD,A0 ;SHOW ROAD
MOVE A0,@BAKMODS,L
MOVI AIRRECT3A,A0
MOVE A0,@CURRENT,L
MOVI AIRBRECT3,A0
MOVE A0,@BCURRENT,L
MOVI 010000H,A0
MOVE A0,@HZSPD,L
MOVE @WORLDTLY,A9,L
SRL 16,A9
ADDI 250,A9 ;A9=Y TARGET LINE TO TRIGGER SCROLL
CLR A8 ;A8=0 MEANS NOT CHECKING FOR X TARGET
MOVI PATHCB,A10 ;INDICATES NEW SCROLL WITH SCRL TABLE
CREATE TARGPID,TARGET
MOVI ( 5 *32*32)+( 5 *32)+( 5 ),A1 ;GREY
MOVE A1,@IRQSKYE
MOVK 29,A0
MOVE A0,@WAVE
MOVK 13,A0 ;10
MOVE A0,@CTOTAL
MOVI ICN1,A0
MOVE A0,@ICLIST,L
JRUC WRPDN
WRPK
CMPI 13,A0
JRNZ WRPL
;FOR START AT BEGINNING OF 2ND ROAD
SLEEPK 2
;DESERT STARTS HERE
; MOVI [127EH,0],A2
; MOVE A2,@WORLDTLY,L
; MOVI [0E4H,0],A0
; MOVE A0,@WORLDTLX,L
; MOVE *A0(OXVAL),A2,L
; SUB A3,A2
; MOVE A2,*A0(OXVAL),L
; MOVE *A0(OYVAL),A2,L
; SUB A4,A2
; MOVE A2,*A0(OYVAL),L
;2ND ROAD STARTS HERE
; MOVI [912H,0],A2
; MOVE A2,@WORLDTLY,L
; MOVI [01520H,0],A0
; MOVE A0,@WORLDTLX,L
MOVI [127FH,0],A5
MOVE @WORLDTLY,A4,L
SUB A4,A5
MOVI [096DH,0],A4
SUB A5,A4
MOVI [-143CH,0],A3
CALLR MOVESQRS
CLR A0 ;1=STUCK IN GOO, 0=BALL AND CHAIN
MOVE A0,@HSTGSET
MOVE A0,@CRSRAM,L
MOVI [912H,0],A2
MOVE A2,@WORLDTLY,L
MOVI [01520H,0],A0
MOVE A0,@WORLDTLX,L
MOVI ROAD2_MOD,A0 ;SHOW ROAD
MOVE A0,@BAKMODS,L
MOVI ( 5 *32*32)+( 5 *32)+( 5 ),A1 ;SAND COLOR
MOVE A1,@IRQSKYE
CREATE0 FIX3
MOVK 18,A0
MOVE A0,@WAVE
MOVK 2,A9 ;A9=0 FOR UP, 1 FOR RGT
CREATE ARWPID,ONARRW ;TURN ON LFT ARROW
CREATE FUTUREPID,AOF ;ARROW OFF AFTER A TIME
MOVK 8,A0 ;10
MOVE A0,@CTOTAL
MOVI ICN4,A0
MOVE A0,@ICLIST,L
CREATE ICONPID,SEND_ICON ;2 ICON SETS FOR ROADWAY
MOVK SUBSPRY,A9 ;BULLET SUBTYPE
CREATE FIXPID,FIXGUNS
JRUC WRPDN
WRPL
CMPI 14,A0
JRNZ WRPM
;FOR START AT END OF 2ND ROAD
SLEEPK 2
;DESERT STARTS HERE
; MOVI [127EH,0],A2
; MOVE A2,@WORLDTLY,L
; MOVI [0E4H,0],A0
; MOVE A0,@WORLDTLX,L
; MOVE *A0(OXVAL),A2,L
; SUB A3,A2
; MOVE A2,*A0(OXVAL),L
; MOVE *A0(OYVAL),A2,L
; SUB A4,A2
; MOVE A2,*A0(OYVAL),L
;END OF ROAD STARTS HERE
; MOVI [912H,0],A2
; MOVE A2,@WORLDTLY,L
; MOVI [0611H,0],A0
; MOVE A0,@WORLDTLX,L
MOVI [127FH,0],A5
MOVE @WORLDTLY,A4,L
SUB A4,A5
MOVI [096DH,0],A4
SUB A5,A4
MOVI [-52DH,0],A3
CALLR MOVESQRS
CLR A0 ;1=STUCK IN GOO, 0=BALL AND CHAIN
MOVE A0,@HSTGSET
MOVE A0,@CRSRAM,L
SLEEPK 1
MOVI [912H,0],A2
MOVE A2,@WORLDTLY,L
MOVI [0611H,0],A0
MOVE A0,@WORLDTLX,L
MOVI ROAD2_MOD,A0 ;SHOW ROAD
MOVE A0,@BAKMODS,L
MOVI ( 5 *32*32)+( 5 *32)+( 5 ),A1 ;SAND COLOR
MOVE A1,@IRQSKYE
CLR A0
MOVE A0,@CURRENT,L
MOVE A0,@BCURRENT,L
MOVE @WORLDTLX+16,A8
ADDK 5,A8 ;A8=X TARGET LINE TO TRIGGER SCROLL
CLR A9 ;A9=0 MEANS NOT CHECKING FOR Y TARGET
MOVI PATHL2,A10 ;INDICATES NEW SCROLL WITH SCRL TABLE
MOVI 08000H,A0
MOVE A0,@HZSPD,L
CREATE TARGPID,TARGET
MOVI 34,A0
MOVE A0,@WAVE
MOVK 8,A0 ;10
MOVE A0,@CTOTAL
MOVI ICN4,A0
MOVE A0,@ICLIST,L
CREATE ICONPID,SEND_ICON ;2 ICON SETS FOR ROADWAY
SLEEPK 1
JRUC WRPDN
WRPM
CMPI 16,A0
JRNZ WRPN
;FOR START AT BEGINNING OF BASEMENT
SLEEPK 2
;DESERT STARTS HERE
; MOVI [127EH,0],A2
; MOVE A2,@WORLDTLY,L
; MOVI [0E4H,0],A0
; MOVE A0,@WORLDTLX,L
; MOVE *A0(OXVAL),A2,L
; SUB A3,A2
; MOVE A2,*A0(OXVAL),L
; MOVE *A0(OYVAL),A2,L
; SUB A4,A2
; MOVE A2,*A0(OYVAL),L
;END OF ROAD STARTS HERE
; MOVI [912H,0],A2
; MOVE A2,@WORLDTLY,L
; MOVI [0611H,0],A0
; MOVE A0,@WORLDTLX,L
; MOVI [04E8H,0],A2 ;AT START
; MOVE A2,@WORLDTLY,L
;
; MOVI [068H,0],A0
; MOVE A0,@WORLDTLX,L
MOVI [127FH,0],A5
MOVE @WORLDTLY,A4,L
SUB A4,A5
MOVI [0D97H,0],A4
SUB A5,A4
MOVI [7CH,0],A3
CALLR MOVESQRS
CLR A0 ;1=STUCK IN GOO, 0=BALL AND CHAIN
MOVE A0,@HSTGSET
MOVE A0,@CRSRAM,L
SLEEPK 1
; MOVI [912H,0],A2
; MOVE A2,@WORLDTLY,L
; MOVI [0611H,0],A0
; MOVE A0,@WORLDTLX,L
MOVI [04E8H,0],A2 ;AT START
MOVE A2,@WORLDTLY,L
MOVI [068H,0],A0
MOVE A0,@WORLDTLX,L
MOVI BOSS_MOD,A0 ;SHOW BOSS PIT
MOVE A0,@BAKMODS,L
MOVI ( 3 *32*32)+( 4 *32)+( 5 ),A1 ;BASEMENT COLOR
MOVE A1,@IRQSKYE
CLR A0
MOVE A0,@CURRENT,L
MOVE A0,@BCURRENT,L
MOVE A0,@FREETOT
MOVK 3,A0
MOVE A0,@RUNIN,W ;RUNIN FROM ABOVE SCRN
MOVI 38,A0
MOVE A0,@WAVE
MOVK 8,A0 ;10
MOVE A0,@CTOTAL
MOVI ICN1,A0
MOVE A0,@ICLIST,L
CREATE0 DLYINTO
SLEEPK 1
JRUC WRPDN
BOSS_MOD ;BASEMENT BOSS MONSTER PIT
.LONG BOTMBMOD ;THIS IS FROM BLIMP (MODULE NAME)
.WORD 0100,0100 ;x,y start pos.
.long -1
****************************************************************************
.REF TEXTTST
WRPN CMPI 17,A0
JRNZ WRPO
;ENDING 1 = NO FRY, NO DOMES
clr a0
move a0,@SCORE_FLAG
MOVI 40,A0
MOVE A0,@WAVE
MOVK 1,A0
MOVE A0,@ESCAPED
WRPZZ SLEEP 30
MOVI CLSNEUT|TYPTEXT|SUBSCOR,A0
CALLA KIL1OBJC
; SLEEP 10
JAUC TEXTTST
WRPO CMPI 18,A0
JRNZ WRPP
;ENDING 2 = FRY, NO DOMES
clr a0
move a0,@SCORE_FLAG
MOVI 40,A0
MOVE A0,@WAVE
CLR A0
MOVE A0,@ESCAPED
JRUC WRPZZ
WRPP CMPI 19,A0
JRNZ WRPQ
;ENDING 3 = DOMES
clr a0
move a0,@SCORE_FLAG
MOVI 40,A0
MOVE A0,@WAVE
CLR A0
MOVE A0,@ESCAPED
MOVI 500,A0 ;MORE THAN ENOUGH KEYS
move A0,@P1DATA+TKEYS
JRUC WRPZZ
WRPQ LOCKUP
PATHL2 ;DIR,CNT
.WORD 7,01H,0
PATHCB ;DIR,CNT
.WORD 1,1,19,1,0
CLRIT MOVE *A6+,A0,L
CALLA OBJOFF
JRUC DGD
PASWRDS:
;SHOW CODE
.STRING "BOOF" ;=41H-5AH, 20H=SPACE - START=1 REACTOR ON SCRN
.STRING "++++" ; START=2 SECRET PATH BEHIND
.STRING "TOID" ; 3 - START OF REACTOR WORLD
.STRING "GOOB" ; 4 - 1ST DESERT LOCK DOWN
.STRING "ZULU" ; 5 - BEFORE 1ST TAUNT
.STRING "ORCS" ;ORCS 6 - BEFORE ORCUS
.STRING "ROAD" ;ROAD 7 - ROAD AFTER RACKUP
.STRING "LIPS" ; 8 - END OF 1ST ROAD
.STRING "LICK" ; 9 - AFTER PLANE TARMAC AREA
.STRING "SHOK" ;SHOK 10 - SHOCK SCENE
.STRING "++++" ;NOT USED 11 - BACK FROM SHOCK
.STRING "FIRE" ; 12 - FLAMING GRUNTS IN PORT
.STRING "FOOD" ; 13 - START OF SECOND ROAD
.STRING "EATS" ;EATS 14 - END OF SECOND ROAD
.STRING "++++" ; 15 - BEFORE BOSS PIT
.STRING "MARK" ;MARK 16 - START OF BASEMENT
.STRING "DOME" ; 17 - ENDING 1
.STRING "WORM" ; 18 - ENDING 2
.STRING "AZAZ" ;AZAZ 19 - FINAL ENDING INTO DOMES
.WORD 0
DIGITS
;A10=PROCESS OF ARROW POINTER
MOVE *A9(OPLINK),A9,L
CLR A11
DG0 MOVI DG2,A14
CALLA DO_ALL_STUFF
CALLA ADJSTWTL
MOVE A11,A1
SLL 5,A1
ADD A13,A1
ADDI PDATA,A1
MOVE A0,*A1,L
MOVE A11,A1
SLL 4,A1
ADDI ARX,A1
MOVE *A1,A1
DEC A1
MOVE A1,*A0(OXPOS)
INC A11
CMPI 4,A11
JRNZ DG0
MOVK 1,A0
MOVE A0,*A13(PDATA+200) ;DEBOUNCE
DGTOP0
;DRAW ALL 5 LETTERS
MOVE @WORDS+4*16,A0
JRZ DEX
CMPI 0FFH,A0
JRZ KDEX
SLEEPK 1
JRUC DGTOP0
KDEX
MOVE *A13(PDATA),A0,L
CALLA DELOBJ
MOVE *A13(PDATA+32),A0,L
CALLA DELOBJ
MOVE *A13(PDATA+64),A0,L
CALLA DELOBJ
MOVE *A13(PDATA+96),A0,L
CALLA DELOBJ
DIE
DEX MOVI WORDS,A5
MOVI PDATA,A6
ADD A13,A6
CLR A7
DGDRW
MOVE *A5+,A1,W ;LETTER X VALUE
JRZ CLRIT
SLL 5,A1
ADDI WARPTXT-32,A1
MOVE *A1,A1,L
MOVE A7,A0
SLL 4,A0
ADDI ARX,A0
MOVE *A0,A0
DEC A0
CMPI FON15X,A1 ;SPECIAL CASE FOR ALIGNING THESE WIDE LETTERS
JRZ DGBIG
CMPI FON15W,A1
JRZ DGBIG
CMPI FON15V,A1
JRZ DGBIG
CMPI FON15M,A1
JRNZ NOB
DGBIG
SUBK 3,A0
NOB
MOVE *A6+,A8,L
MOVE A0,*A8(OXPOS)
MOVE *A8(OFLAGS),A4
CALLA ANI
MOVE A8,A0
CALLA OBJON
DGD
INC A7
CMPI 4,A7
JRNZ DGDRW
CALLR GETJ
; ANDI 0FH,A2
ANDI 0F0H,A2
JRNZ A_MV
;STICK IS NOT BEING TOUCHED
CLR A0
MOVE A0,*A13(PDATA+200) ;DEBOUNCE
DGTOP SLEEPK 1
JRUC DGTOP0
GETJ MOVE @SWITCH,A5 ;MOVE PLAYER SWITCHES TO A5 (32 BIT PORT)
NOT A5
MOVB A5,@P1CTRL
SRL 8,A5 ;4 THIS IS Y-UNIT
MOVB A5,@P2CTRL
MOVE *A9(STICK),A2,L
;GET STICK FROM TORSO STRUCT
MOVE *A2,A2,W ;GET ACTUAL CTRL INFO
RETS
ARX .WORD 016FH,187H,19FH,1B6H,1D8H
A_MV:
MOVE *A13(PDATA+200),A0
JRZ BCNT
DEC A0
MOVE A0,*A13(PDATA+200)
JRUC DGTOP
BCNT
MOVE *A10(PDATA),A0 ;ARROW INDEX
SLL 4,A0
ADDI WORDS,A0
MOVE *A0,A1
BTST BMPFDOWN,A2
JRZ PLYR_UP
;MOVE DOWN THRU ALPHABET
MOVE A1,A1
JRNZ AXE
MOVK 26,A1
JRUC DEBA
AXE DEC A1
DEBA
MOVE A1,*A0,W
MOVK 7,A0
MOVE A0,*A13(PDATA+200)
MOVI BEEP1,A0
CALLA ONESND
JRUC DGTOP
PLYR_UP:
BTST BMPFUP,A2
JRZ DGTOP
;MOVE UP THRU ALPHABET
CMPI 26,A1
JRNZ AXE2
CLR A1
JRUC DEBA
AXE2 INC A1
JRUC DEBA
WARW MOVE A13,@KPARWP,L
MOVI ARZ,A14
CALLA DO_ALL_STUFF
CALLA ADJSTWTL
MOVE A0,A8
MOVK 1,A0
MOVE A0,*A13(PDATA+16)
;A9=PLAYER IMG
MOVE *A9(OPLINK),A9,L
CLR A0
MOVE A0,*A13(PDATA) ;INDEX
ARWTOP SLEEPK 1
;POSITION ARW (PDATA)=INDEX 0-5
MOVE @WORDS+4*16,A0
JRNZ WEX
MOVE *A13(PDATA),A1
SLL 4,A1
ADDI ARX,A1
MOVE *A1,A1
MOVE A1,*A8(OXPOS)
CALLR GETJ
ANDI 0FH,A2
JRNZ YES_A_MV
; STICK IS NOT BEING TOUCHED
CLR A0
MOVE A0,*A13(PDATA+16) ;DEBOUNCE
JRUC ARWTOP
YES_A_MV:
MOVE *A13(PDATA+16),A0
JRZ ACNT
DEC A0
MOVE A0,*A13(PDATA+16)
JRUC ARWTOP
WEX jauc DELOBJDIE
ACNT
;
; PLAYER WILL MOVE IN DIRECTION SPECIFIED IN A2
MOVE *A13(PDATA),A10 ;INDEX 0-5
BTST BMPRYTE,A2
JRZ PLYR_LFT
;CHECK FOR RIGHT SIDE OF SCREEN
;SCRN EDGE OK
CMPI 4,A10
JRZ ARWTOP
INC A10
DEB MOVI 90,A0 ;6
MOVE A0,*A13(PDATA+16)
MOVE A10,*A13(PDATA)
MOVI BEEP1,A0
CALLA ONESND
JRUC ARWTOP
PLYR_LFT:
BTST BMPLEFT,A2
JRZ ARWTOP ;TSTDN
CMPI 0,A10
JRZ ARWTOP
DEC A10
JRUC DEB
WTIME
;TURN ON 2 DIGITS AND TIME THEM OUT
MOVI DG1,A14
CALLA DO_ALL_STUFF
CALLA ADJSTWTL
MOVE A0,A8
MOVI DG1,A14
CALLA DO_ALL_STUFF
CALLA ADJSTWTL
MOVE *A0(OXPOS),A1
ADDK 7,A1
MOVE A1,*A0(OXPOS)
MOVE A0,A9
MOVK 2,A0 ;20 SECONDS
MOVE A0,*A13(PDATA)
CLR A0
MOVE A0,*A13(PDATA+16)
TIMTOP MOVE @WORDS+4*16,A0
JRNZ TIMOUT
MOVE *A13(PDATA),A0
SLL 5,A0
ADDI digit_t,A0
MOVE *A0,A1,L
MOVE *A8(OFLAGS),A4
CALLA ANI
;
MOVE *A13(PDATA+16),A0
SLL 5,A0
ADDI digit_t,A0
MOVE *A0,A1,L
PUSH A8
MOVE A9,A8
MOVE *A8(OFLAGS),A4
CALLA ANI
PULL A8
SLEEP 60
MOVE *A13(PDATA+16),A0
JRNZ TMW1
MOVK 9,A0
MOVE A0,*A13(PDATA+16)
MOVE *A13(PDATA),A0
JRZ TIMOUT
DEC A0
MOVE A0,*A13(PDATA)
JRUC TIMTOP
TMW1 DEC A0
MOVE A0,*A13(PDATA+16)
JRUC TIMTOP
TIMOUT
;TIMER RAN OUT!
;
CMPI 0FFH,A0
JRZ T8
MOVK 1,A0
MOVE A0,@WORDS+4*16
T8 SLEEPK 1
MOVE @WORDS+4*16,A0 ;TAKES AWAY PASSWRD LETTERS
CMPI 0FFH,A0
JRNZ T8
CALLA DELOBJA8
MOVE A9,A0
CALLA DELOBJ
DIE
.long 0
digit_t .LONG WTIMER0,WTIMER1,WTIMER2,WTIMER3,WTIMER4
.LONG WTIMER5,WTIMER6,WTIMER7,WTIMER8,WTIMER9
DG2: ;FONT
.LONG [88H,0],[6BH-20,0],FON15A
.WORD 470,DMAWNZ|M_NOCOLL,CLSNEUT
.LONG 0,0
DG1:
.LONG [0F3H,0],[062H-20,0],WTIMER0
.WORD 470,DMAWNZ|M_NOCOLL,CLSNEUT
.LONG 0,0
ARZ:
.LONG [88H,0],[07EH-20,0],ARW2
.WORD 470,DMAWNZ|M_NOCOLL,CLSNEUT
.LONG 0,0
BIGMAP
;MAPNUM=0-2
;TURN ON MAP BUTTON AT BOTTOM OF SCREEN
;IF IT SCROLLS OFF SCRN, KILL IT, DIE
;IF PLAYER TOUCHES IT, XFERPROC TO MAP SLIDING OUT
;HALT ALL ACTION
;DISPLAY TEXT OBJECTIVES
;TIME OUT MAP OR HIT ANY START BUTTON TO SLIDE IT OFF
;RESTART ACTION
MOVE @GAMSTATE,A0
CMPI INAMODE,A0
JAZ SUCIDE
SLEEPK 4
MOVI [022H,0],A0
MOVI [098H,0],A1
MOVE @WAVE,A2
CMPI 1,A2
JRNZ BGB
MOVI [0D4H-25,0],A1
BGB
CMPI 17,A2
JRNZ BG9
MOVI [415,0],A0
MOVI [233,0],A1
BG9 MOVI MAPBUTN,A2
MOVI 71,A3
MOVI DMAWNZ|M_PIXSCAN,A4
MOVI CLSNEUT|TYPICON|SUBMAN,A5
CLR A6
CLR A7
CALLA BEGINOBJ
BG1 SLEEP 180
CALLA SCRTST
JRZ BG1
;SKIPPED GETTING MAP
jauc DELOBJDIE
TTIMER SLEEPK 1
MOVE @TAUNTOUT,A0
CMPI 3,A0
JRZ DRT
DEC A10
JRNZ TTIMER
DRT SLEEP 60
DIE
WAITTNT
;SLIDE IN DICTATOR MESSAGE!
SLEEP 60 ;120
;CHECK FOR BULLETS IN AIR ALSO!
MOVI BULPID,A0
CLR A1
NOT A1
CALLA EXISTP
* Z BIT CLR = MATCH, A0 = PTR TO PROCESS
JRNZ WAITTNT
MOVE @PLYRPRCS,A0,L
JRZ WTR5
MOVE *A0(DEAD),A1
JRNZ WAITTNT
WTR5 MOVE @PLYRPRCS+32,A0,L
JRZ WTR6
MOVE *A0(DEAD),A1
JRNZ WAITTNT
WTR6 MOVE @SHK_ON,A0
MOVE @CNTDIG1,A1
MOVE @CNTDIG2,A2
MOVE @HULK_CNT,A3
MOVE @PCTOT,A4
OR A4,A0
OR A0,A1
OR A1,A2
OR A2,A3
JRNZ WAITTNT
;STOP BUYINS, CHECK FOR BUTTON PRESS TO EXIT THIS TAUNT!
MOVE A3,@NOSHOOT
MOVE A3,@timeron ;do not accumulate seconds
MOVE A13,@KP_TAUNT,L
MOVE A3,@WFLG
MOVE A10,@TNT_TYPE ;0=TAUNT ONE,1=RACK UP ONE,2=RACK 2
;3=GI GETS EATEN
MOVI ACTIVE,A2,L
XXT:
MOVE *A2,A2,L ;GET NEXT
JREQ VSC ;ALL DONE
MOVE *A2(PROCID),A4
CMPI 1000H,A4 ;SWITCH PROC?
JRZ XXT
MOVE *A2(PTIME),A4
ADDI 5*60*60+2,A4 ;ADD 60 SECONDS TO IT
MOVE A4,*A2(PTIME)
JRUC XXT
VSC MOVI 5*60*60,A10
CREATE0 TTIMER
MOVE A0,*A13(PDATA+32),L
MOVK 1,A0
MOVE A0,@HALT
CALLA KILJOY
CALLA INIT_SCORE ;TURNS ON REGULAR IMAGES FOR SCORES
MOVI CYCPID,A0
CALLA KIL1C
MOVI POWPID,A0 ;ALL COLOR CYCLES OFF AFTER WARP
CALLA KIL1C
CLR A0
MOVE A0,@CYCLIFE
SLEEPK 2
CLR A0
MOVE A0,@P1CTRL
MOVE A0,@P2CTRL
MOVE A0,@SCORE_FLAG
SLEEPK 10
CALLA CLNPAL
CALLA STRT_CRM ;START HEADQUARTERS CYCLE
CALLA STRT_S ;START STATIC CYCLE
MOVK 2,A9
CREATE0 STATSNDS
MOVK 31,A9
MOVI RMOD,A10 ;SHOW HOME BASE VIEW SCREEN
MOVE @TNT_TYPE,A1
JRNZ TAG1Z
MOVI TUNE3,A0
CALLA ONESNDOVR
;FORCE CORRECT Y
movk AUDTAUNT1,a0
calla aud_addnumplyrs
MOVI [0A80H-2,0],A2
MOVE A2,@WORLDTLY,L
JRUC TAG1
TAG1Z CMPI 1,A1
JRZ RK1
CMPI 2,A1
JRZ SECRACK
;PURPLE GUY EATS GI
MOVI TUNE3,A0
CALLA ONESNDOVR
MOVI VWSCRN2,A10 ;SHOW HOME BASE VIEW SCREEN
MOVK 024,A9
MMTM SP,A9,A10
MOVK 2,A1
CALLA INCOM_TRAN
MMFM SP,A9,A10
MOVI 40,A0
MOVE A0,@WAVE
JRUC TAG1
SECRACK
;2ND RACK
MOVI RMOD3,A10 ;SHOW HOME BASE VIEW SCREEN
MOVK 026,A9
MMTM SP,A9,A10
MOVK 1,A1
CALLA INCOM_TRAN
MMFM SP,A9,A10
JRUC TAG1
RK1
MOVI RMOD2,A10 ;SHOW HOME BASE VIEW SCREEN
MOVK 028,A9
MMTM SP,A9,A10
CLR A1
CALLA INCOM_TRAN
MMFM SP,A9,A10
TAG1 MOVE A10,@BAKMODS,L
CALLA ZERO_BITS
;SLIDE OFF AND SLIDE ON HOME BASE BLIMP MODULE!
MOVI STATSND,A0
CALLA ONESND
MOVE A9,@DELAYALL
MOVE @TNT_TYPE,A1
CMPI 3,A1
JRNZ SLTOP
;PURPLE EATS
CALLA STOPOBJS
CLR A0
MOVE A0,@HALT
XLTOP SLEEPK 1
MOVE @WORLDTLX,A0,L
SUBI [16,0],A0
MOVE A0,@WORLDTLX,L
CALLA BGND_UD1
DSJ A9,XLTOP
SLEEP 60
MOVE A9,@DELAYALL
CREATE0 GENSPK
MOVI roarlongsnd,a0
calla ONESNDOVR
.REF prt_inrackwin
movi WATCHTHIS,a8
movi 50,a9
CREATE0 prt_inrackwin
CREATE INTROPID,BIG_EAT
CALLA STRTS2
MOVI ( 4 *32*32)+( 5 *32)+( 5 ),A0 ;SKY COLOR
MOVE A0,@IRQSKYE
MOVK 2,A0
MOVE A0,@TAUNTOUT
SLEEPK 0FH
CALLA ERASE_TXT
;TURN OFF BALLONS
MOVI CLSNEUT|TYPTEXT,A0
CALLA KIL1OBJC
JRUC TLP
roarlongsnd .word >f990,120,>8123,0 ;Roar PAIN
WATCHTHIS
; .byte "YOU SHOULD AVOID THIS",0
.byte "COMING SOON FOR YOU!",0
.even
VWSCRN2:
.LONG HOME2BMOD ;THIS IS FROM BLIMP (MODULE NAME)
.WORD 613H-400+6,912H ;x,y start pos.
.LONG >FFFFFFFF
SLTOP SLEEPK 1
MOVE @WORLDTLX,A0,L
ADDI [16,0],A0
MOVE A0,@WORLDTLX,L
CALLA BGND_UD1
DSJ A9,SLTOP
MOVK 1,A0
MOVE A0,@TAUNTOUT
;KILL IMAGES OFF SCRN TO LEFT!
;107 ZPOS, FLAG, HOSTAGES
;ALSO KILL SOME PROCS?
CALLA DELOFFBOTL
CLR A1
NOT A1
MOVI CLSNEUT|TYPMINE,A0
CALLA KILOBJ
CAG MOVI CLSNEUT|TYPCRTE|SUBBRL,A0
CLR A1
NOT A1
CALLA EXISTOBJ
* RETURNS: *
* Z BIT SET = NO OBJECT, A0 = 0 *
* Z BIT CLR = YES OBJECT, A0 = PTR TO OBJECT *
JRZ HAGN
MOVE *A0(OIMG),A1,L
CMPI BRRL2,A1
JRZ BDI
LOCKUP
EINT
BDI
MOVE *A0(OPLINK),A1,L
CALLA DELOBJ
MOVE A1,A0
MOVE *A0(PROCID),A1
CMPI CMAN,A1
JRNZ CAG
; LOCKUP
; EINT
;BDI2
CALLA KILL
JRUC CAG
HAGN MOVI HSTGPID,A0
CLR A1
NOT A1
CALLA EXISTP
JRZ NOHS
MOVI TNTIT,A7
CALLA GETA8
CLR A1
CALLA XFERPROC
JRUC HAGN
NOHS MOVI FLGPID,A0
CLR A1
NOT A1
CALLA EXISTP
JRZ NOFL
MOVK 1,A10
MOVE A10,*A0(PA10),L
MOVE A10,*A0(PTIME)
NOFL
; CLR A0
MOVI 2*32*32+2*32+2,A0
MOVE A0,@IRQSKYE ;BLACK BACKGROUND BEHIND DICTATOR
;STATIC STILL GOING
MOVE @TNT_TYPE,A0
JRZ NORACK
MOVI ICONPID,A0
CALLA KIL1C ;START ICONS FRESH
MOVI CMAN,A0
CALLA KIL1C
MOVI CLSNEUT|TYPICON,A0
MOVI 0FF00H,A1 ;DEL ANY ICONS SITTING AROUND
CALLA KILOBJ
CREATE0 DO_RACKUP
SLEEP 50
; CLR A0
; MOVE A0,@FREETOT
JRUC ARACK
;PUT UP BALLOON FOR GENERAL
NORACK SLEEPK 30
MOVI BLOB1,A14
CALLA DO_ALL_STUFF
CALLA ADJSTWTL
MOVI BLOB2,A14
CALLA DO_ALL_STUFF
CALLA ADJSTWTL
MOVI BLOB3,A14
CALLA DO_ALL_STUFF
CALLA ADJSTWTL
CLR A0
MOVE A0,@WRLD
;TURN ON FISRT BALLOON TEXT
MOVI BLLNP5,A0
CALLA GETFPAL ;GET A COLOR MAP ASSIGNMENT
MOVE A0,A6
MOVE A6,*A13(PDATA),W
MOVI BTEXT1,A8
MOVI [021H+5,0125H-30],A9 ;SCRN Y/X
MOVI RD8FONT,A11 ;FONT TABLE
MOVK 1,A10 ;Y,X SPACING BETWEEN CHARCTERS
CLR A0
JSRP STRCNRMO_1 ;FULL COLOR FONT
MOVI BTEXT2,A8
MOVI [02CH+5,0123H-30],A9 ;SCRN Y/X
MOVE *A13(PDATA),A6,W
CLR A0
JSRP STRCNRMO_1
MOVI BTEXT3,A8
MOVI [037H+5,0125H-30],A9 ;SCRN Y/X
MOVE *A13(PDATA),A6,W
CLR A0
JSRP STRCNRMO_1
MOVI BTEXT4,A8
MOVI [042H+5,0124H-30],A9 ;SCRN Y/X
MOVE *A13(PDATA),A6,W
CLR A0
JSRP STRCNRMO_1
SLEEP 090H
CREATE MADPID,DO_MAN
SLEEPK 020H
ARACK
CLR A0
MOVE A0,@DELAYALL ;TELL STATIC TO GO AWAY
SLEEPK 010
CALLA ERASE_TXT
;TURN OFF BALLONS
MOVI CLSNEUT|TYPTEXT,A0
CALLA KIL1OBJC
MOVK 2,A0
MOVE A0,@TAUNTOUT
TLP SLEEPK 1
MOVE *A13(PDATA+32),A0,L
CALLA GETA10
CMPI 52,A10
JRC TLIN
MOVE @TAUNTOUT,A0
SUBK 3,A0
JRNZ TLP
TLIN CALLA ERASE_TXT
movk 1,a11
CREATE0 STATIC_COVER
SLEEPK 15
MOVI MADPID,A0
CALLA KIL1C ;KILL ALL MADMAN PROCS
calla anim_killall
clr a0 ;Enable player starts
move a0,@NO_START
move a0,@INTRO
MOVE *A13(PDATA+32),A0,L
CALLA GETA10
SUBI 55,A10
JRN DONADA
;EXITED EARLY! UPDATE PROCS SLEEPING TO LONG
MOVI ACTIVE,A2,L
CXT
MOVE *A2,A2,L ;GET NEXT
JREQ DONADA ;ALL DONE
MOVE *A2(PROCID),A4
CMPI 1000H,A4 ;SWITCH PROC?
JRZ CXT
MOVE *A2(PTIME),A4
SUB A10,A4
MOVE A4,*A2(PTIME)
JRUC CXT
DONADA CLR A1
MOVE A1,@TAUNTOUT
SLEEPK 15
CALLA KILBGND
MOVI 30,A10 ;TIME FOR RINGS
CREATE0 SETDET ;SET DELYDET ON PLAYERS
;CHANGE TO A NEW BMOD HERE
MOVE @WAVE,A0
CMPI 40,A0
JRNZ DONW2
;END OF PURPLE GUY EATS SOLDIER!
;FADE TO BLACK
JSRP CLN2RD
MOVK 21,A10 ;HUNT DOWN AKHBOOB LIKE A DOG!
MOVI [-16,0],A9
CREATE0 ZONE_TXT3
.REF sleep_var
MOVI 190H-120-70,A0
CALLA sleep_var
SLEEP 70+40
; SLEEP 190H-120
;UP INTO BIO-NUCLEAR FACILITY
CLR A0
MOVE A0,@WORLDTLX,L
MOVI [0476H+200,0],A2 ;35B
MOVE A2,@WORLDTLY,L
MOVK 1,A0
MOVE A0,@WAVE
CALLA STRTA
MOVE @WORLDTLY,A9,L
SRL 16,A9
ADDI 130,A9 ;A9=Y TARGET LINE TO TRIGGER SCROLL
CLR A8 ;A8=0 MEANS NOT CHECKING FOR X TARGET
CLR A10
CREATE TARGPID,TARGET
CREATE FUTUREPID,AOF ;ARROW OFF AFTER A TIME
MOVK 18,A0
MOVE A0,@CTOTAL ;LOTS OF CRUISE MISSILES
MOVI ICN1,A0
MOVE A0,@ICLIST,L
CREATE ICONPID,SEND_ICON ;2 ICON SETS FOR ROADWAY
SLEEPK 2
CALLA BGND_UD1
MOVI DESRTPL,A0
CALLA BLAKOUT
MOVI PCP,A0
CALLA BLAKOUT
MOVI GRNDP,A0
CALLA BLAKOUT
CALLA CLNPAL
MOVI PALCNO,A0 ;FADE IN GREY AUTOPAL ALSO
MOVK 2,A1
CALLA FADEIN
MOVI PALBNO,A0
CALLA FB_FADEIN
MOVK 1,A0
MOVE A0,@AFTR_WRP ;NO FREE MAN
CALLR PLYRS_CNTR
CLR A9
MOVE A9,@AFTR_WRP
CALLR RESTRT
MOVI TUNE3O,A0 ;START DESERT MUSIC AGAIN
CALLA ONESND
SLEEP 50
MOVI TUNE7,A0
CALLA ONESND
CREATE FUTUREPID,SEND_TOP ;SEND FIRST ENEMIES
MOVK 1,A0
CALLA DOLORD
DIE
TUNE7 .WORD >F3F0,1,>800A,0 ;BIG FORT MUSIC
DONW2 CMPI 33,A0
JRNZ TOFORT
MOVK 1,A0
MOVE A0,@HALT
;TO THE FORT ROAD
;AFTER RACKUP!
;FOR START AT BEGINNING OF 2ND ROAD AFTER RACKUP
;FADE TO BLACK
JSRP CLN2RD
MOVK 19,A10 ;2ND ROAD MESSAGE - I'M IMPRESSED
MOVI [-16,0],A9
CREATE0 ZONE_TXT3
MOVI 190H-120-70,A0
CALLA sleep_var
SLEEP 70+40
; SLEEP 190H-120
; SLEEP 60H-120
; movi 60*7,a0 ;8
; callA sleep_var
CALLR RESET_CASH
MOVI [912H,0],A2
MOVE A2,@WORLDTLY,L
MOVI [01520H,0],A0
MOVE A0,@WORLDTLX,L
MOVI ROAD2_MOD,A0 ;SHOW ROAD
MOVE A0,@BAKMODS,L
MOVK 18,A0
MOVE A0,@WAVE
MOVK 2,A9 ;A9=0 FOR UP, 1 FOR RGT
CREATE ARWPID,ONARRW ;TURN ON LFT ARROW
CREATE FUTUREPID,AOF ;ARROW OFF AFTER A TIME
MOVK 8,A0 ;10
MOVE A0,@CTOTAL
MOVI ICN4,A0
MOVE A0,@ICLIST,L
CREATE ICONPID,SEND_ICON ;2 ICON SETS FOR ROADWAY
CREATE ICONPID,SEND_ICON ;2 ICON SETS FOR ROADWAY
MOVK SUBSPRY,A9 ;BULLET SUBTYPE
CREATE FIXPID,FIXGUNS
SLEEPK 2
CLR A1
MOVE A1,@DISPLAYON
CALLA BGND_UD1
CALLA CLNPAL
MOVK 1,A0
MOVE A0,@AFTR_WRP ;NO FREE MAN
CALLR PLYRS_CNTR
SLEEPK 4
MOVI PALCNO,A0 ;FADE IN GREY AUTOPAL ALSO
MOVK 2,A1
CALLA FADEIN
MOVI PALBNO,A0
CALLA FB_FADEIN
; MOVK 1,A0
; MOVE A0,@AFTR_WRP ;NO FREE MAN
; CALLR PLYRS_CNTR
SLEEPK 2
MOVK 1,A1
MOVE A1,@DISPLAYON
CREATE0 FIX3
; MOVK 1,A0
; MOVE A0,@AFTR_WRP ;NO FREE MAN
; CALLR PLYRS_CNTR
CLR A9
MOVE A9,@AFTR_WRP
CALLR RESTRT
MOVI TUNE3O,A0 ;START DESERT MUSIC AGAIN
CALLA ONESND
CLR A0
MOVE A0,@HALT
SLEEP 50
MOVI TUNE2,A0
CALLA ONESND
DIE
CLN2RD
MOVI INTROPID,A0
CALLA KIL1C
MOVI CYCPID,A0
CALLA KIL1C
MOVI PALBNO,A0
CALLA FB_FADEOUT
CLR A1
MOVE A1,@IRQSKYE
JSRP DELSTUF
CALLA KILBGND
SLEEP 40
CALLA CLNPAL
CALLA RESTUFF_AUTOERASE
MOVI FUTUREPID,A0 ;ELECTRIC MINE
CALLA KIL1C
MOVI ICONPID,A0
CALLA KIL1C
MOVI CMAN,A0
CALLA KIL1C
MOVI CLSNEUT|TYPICON,A0
MOVI 0FF00H,A1 ;DEL ANY ICONS SITTING AROUND
CALLA KILOBJ
RETP
TOFORT CMPI 16,A0
JRNZ NOTRD
MOVK 1,A0
MOVE A0,@HALT
;AFTER RACKUP!
;FOR START AT BEGINNING OF ROAD AFTER RACKUP
;FADE TO BLACK
MOVI INTROPID,A0
CALLA KIL1C
MOVI CYCPID,A0
CALLA KIL1C
MOVI PALBNO,A0
CALLA FB_FADEOUT
CALLA ERASE_TXT
;TURN OFF BALLONS
MOVI CLSNEUT|TYPTEXT|SUBTXT,A0
CALLA KIL1OBJC
CLR A1
MOVE A1,@IRQSKYE
JSRP DELSTUF
CALLA KILBGND
SLEEP 40
CALLA CLNPAL
CALLA RESTUFF_AUTOERASE
MOVI ICONPID,A0
CALLA KIL1C
MOVI CMAN,A0
CALLA KIL1C
MOVI CLSNEUT|TYPICON,A0
MOVI 0FF00H,A1 ;DEL ANY ICONS SITTING AROUND
CALLA KILOBJ
MOVK 10,A10 ;FLEE FROM MACHINE
MOVI [-16,0],A9 ;Y ADD IN VALUE
CREATE0 ZONE_TXT3
MOVI 190H-120-70,A0
CALLA sleep_var
SLEEP 70+40
; SLEEP 190H-90
CALLR RESET_CASH
MOVI [5060,0],A2
MOVE A2,@WORLDTLY,L
MOVI [0450,0],A0
MOVE A0,@WORLDTLX,L
MOVI ROAD_MOD,A0 ;SHOW ROAD
MOVE A0,@BAKMODS,L
SLEEPK 2
CALLA BGND_UD1
MOVI DESRTPL,a0
CALLA BLAKOUT
MOVI FRTCLS,a0
CALLA BLAKOUT
MOVI GRNDP,a0
CALLA BLAKOUT
MOVI BULLET,a0
CALLA BLAKOUT
MOVI STUFFP,a0
CALLA BLAKOUT
MOVI DUXPAL,a0
CALLA BLAKOUT
CALLA CLNPAL
MOVI PALCNO,A0 ;FADE IN GREY AUTOPAL ALSO
MOVK 2,A1
CALLA FADEIN
MOVI PALBNO,A0
CALLA FB_FADEIN
CREATE0 FIX
MOVK 17,A0
MOVE A0,@WAVE
MOVK 1,A9 ;A9=0 FOR UP, 1 FOR RGT
CREATE ARWPID,ONARRW ;TURN ON UP ARROW
CREATE0 AOF ;ARROW OFF AFTER A TIME
MOVK 8,A0 ;10
MOVE A0,@CTOTAL
MOVI ICONPID,A0
CALLA KIL1C ;START ICONS FRESH
MOVI ICN4,A0
MOVE A0,@ICLIST,L
CREATE ICONPID,SEND_ICON ;2 ICON SETS FOR ROADWAY
CREATE ICONPID,SEND_ICON ;2 ICON SETS FOR ROADWAY
MOVK SUBSPRY,A9 ;BULLET SUBTYPE
CREATE FIXPID,FIXGUNS
CREATE MAPPID,BIGMAP
MOVK 1,A0
MOVE A0,@AFTR_WRP ;NO FREE MAN
CALLR PLYRS_CNTR
CLR A9
MOVE A9,@AFTR_WRP
CALLR RESTRT
MOVI TUNE3O,A0 ;START DESERT MUSIC AGAIN
CALLA ONESNDOVR
CLR A0
MOVE A0,@HALT
SLEEP 50
MOVI TUNE2,A0
CALLA ONESNDOVR
DIE
RESET_CASH
CLR A0 ;1=STUCK IN GOO, 0=BALL AND CHAIN
MOVE A0,@HSTGSET
MOVE A0,@CRSRAM,L
MOVE A0,@P1DATA+CASHCNT,W
MOVE A0,@P2DATA+CASHCNT,W
MOVE A0,@P1DATA+TFLAGS,W ;US FLAGS PICKED UP
MOVE A0,@P2DATA+TFLAGS,W ;US FLAGS PICKED UP
MOVE A0,@P1DATA+THSTGS,W
MOVE A0,@P2DATA+THSTGS,W
MOVE A0,@FREETOT
RETS
ROAD2_MOD:
.LONG XWAYBMOD ;ROAD
.WORD 5F0H,8C1H ;x,y start pos. -0!!!!
.LONG >FFFFFFFF
NOTRD
MOVI ( 11 *32*32)+( 7 *32)+( 0 ),A1 ;SAND COLOR
move a1,@IRQSKYE
MOVI DSRTNEW_MOD,A0 ;SHOW TOP OF DESERT MODULES
MOVE A0,@BAKMODS,L
;SCROLL BACK TO DESERT
MOVK 031,A9
MOVE A9,@DELAYALL
MOVI TUNE3O,A0 ;TUNE OFF
CALLA ONESNDOVR
MOVE @TNT_TYPE,A0
JRZ SLTO
MOVK 28,A9
SLTO SLEEPK 1
MOVE @WORLDTLX,A0,L
SUBI [16,0],A0
MOVE A0,@WORLDTLX,L
CALLA BGND_UD1
DSJ A9,SLTO
CALLR RESTRT
JSRP DELSTUF
MOVE @TNT_TYPE,A0
JRNZ RDIE
;AFTER 1ST TAUNT
MOVK 14,A0
CALLA DOLORD
MOVI ERECT12,A0 ;HUT ON LEFT
MOVE A0,@ENEMY_RECT,L ;FOR SPAWNING AT 2ND DESERT LCKDWN
CREATE0 DOUBLE
MOVI SIT2,A0
MOVE A0,@SITLST,L
MOVI TUNE3O,A0 ;START DESERT MUSIC AGAIN
CALLA ONESNDOVR
SLEEPK 20
MOVI TUNE2,A0
CALLA ONESNDOVR
SLEEPK 1
MOVI TUNE2,A0
CALLA ONESNDOVR
RDIE DIE
DOUBLE
MOVK 1,A0
MOVE A0,@ICONS_DN
SLEEP 12*60
CREATE ICONPID,SEND_ICON
CREATE ICONPID,SEND_ICON
DIE
RESTRT
MOVE A9,@HALT
MOVE A9,@WFLG
MOVE A9,@KP_TAUNT,L
MOVK 1,A0
MOVE A0,@timeron ;START TIMER BACK UP
CREATE JOYPID,JOY_UPDATE
CALLA DMA_SCORE
MOVI INTROPID,A0
CALLA KIL1C
MOVI CYCPID,A0
CALLA KIL1C
MOVI POWPID,A0 ;ALL COLOR CYCLES OFF AFTER WARP
CALLA KIL1C
CLR A0
MOVE A0,@CYCLIFE
CALLA SETC2 ;START LAND MINE COLOR CYCLE
RETS
DELSTUF
;* GET COORS OF AREA TO BE PUT ON DISPLAY LIST.
MOVE @WORLDTL,A3,1
MOVE A3,A4
MOVE @SCRNTL,A0,1
ADDXY A0,A3
MOVE @SCRNLR,A0,1
ADDXY A0,A4
MOVI BAKLST,A8 ;A8 - BAKGROUND LIST
CALLA DISP_DEL
SLEEPK 30
MOVI CLSENMY|TYPGATE,A0
MOVI 0FFFFH,A1 ;0FFFFH,A1
CALLA KILOBJ ;STATIC PIECES
CALLA OFFSCRN
; CALLA CLNPAL
RETP
TWAS1
CALLA ERASE_TXT
;TURN OFF BALLOONS
MOVI CLSNEUT|TYPTEXT,A0
CLR A1
NOT A1
CALLA KILOBJ
JRUC TLIN
DSRTNEW_MOD:
.LONG HUTLCKBMOD ;THIS IS FROM BLIMP (MODULE NAME)
.WORD 0FFE8H,0A63H ;x,y start pos. -0!!!!
.LONG NEWDBMOD ;THIS IS FROM BLIMP (MODULE NAME)
.WORD 0FFFCH,0A63H-800+12 ;x,y start pos. -0!!!!
.LONG NEWD2BMOD ;THIS IS FROM BLIMP (MODULE NAME)
.WORD 0FFF1H,0FFD8H ;x,y start pos. -0!!!!
.LONG >FFFFFFFF
BTEXT1
.BYTE "GENTLEMEN, THAT",0
BTEXT2
.BYTE "S.O.B. GENERAL",0
BTEXT3
.BYTE "AKHBOOB JUST SENT",0
BTEXT4
.BYTE "US THIS MESSAGE.",0
.EVEN
BLOB1
.LONG [319-131,0],[210-180,0],BOON1
.WORD 472,DMAWNZ,CLSNEUT|TYPTEXT
.LONG 0,0
BLOB2
.LONG [16BH-30,0],[210-180,0],BOON1
.WORD 472,DMAWNZ|M_FLIPH,CLSNEUT|TYPTEXT
.LONG 0,0
BLOB3
.LONG [0120H,0],[268-180,0],BOON2
.WORD 472,DMAWNZ,CLSNEUT|TYPTEXT
.LONG 0,0
RMOD ;1ST TAUNT
.long RACKBMOD ;this is from blimp (module name)
.word 203H,>A7E ;x,y start pos.
.long >ffffffff
RMOD2 ;1ST RACKUP
.long RACKBMOD ;this is from blimp (module name)
.word 1A7H+46,0 ;x,y start pos.
.long >ffffffff
RMOD3 ;2ND RACKUP
.long RACKBMOD ;this is from blimp (module name)
.word 16B2H+2,912H ;x,y start pos.
.long >ffffffff
YTAB .WORD 0,23,40 ;FOR RED POINTER ON MAP
BGDO
;PLAYER HAS TOUCHED MAP BUTTON
MOVE A8,*A13(PDATA+32),L ;@TEMP,L
CLR A1
MOVE @WAVE,A0
JRZ DS
MOVK 2,A1
CMPI 1,A0
JRZ DS
MOVK 1,A1
DS MOVE A1,@MAPNUM
MOVK 2,A0
MOVE A0,@ARWOFF
CALLA INIT_SCORE ;TURNS ON REGULAR IMAGES FOR SCORES
SLEEPK 2
CLR A0
MOVE A0,@SCORE_FLAG
CREATE0 SCRLUP
CREATE BLNKPID,BLNK
MOVI IQ1,A14
CALLA DO_ALL_STUFF
CALLA ADJSTWTL
MOVE A0,A8
MOVI IQ2,A14
CALLA DO_ALL_STUFF
CALLA ADJSTWTL
MOVE A0,A9
MOVI IQ3A,A14
MOVE @MAPNUM,A0
JRZ S1
MOVI IQ3B,A14
CMPI 1,A0
JRZ S1
MOVI IQ3C,A14
S1 CALLA DO_ALL_STUFF
CALLA ADJSTWTL
MOVE A0,A10
MOVI IQ4,A14
CALLA DO_ALL_STUFF
CALLA ADJSTWTL
MOVE A0,*A13(PDATA+256),L
MOVI IQ5,A14
CALLA DO_ALL_STUFF
CALLA ADJSTWTL
MOVE A0,*A13(PDATA+288),L
MOVE A0,A5
MOVE @MAPNUM,A0
SLL 4,A0
ADDI YTAB,A0
MOVE *A0,A0
MOVE *A5(OYPOS),A1
SUB A0,A1
MOVE A1,*A5(OYPOS)
MOVI SLIDEIN,A0
CALLA ONESND
MOVI 39,A11
BOUT SLEEPK 1
MOVE *A8(OXPOS),A0
SUBK 10,A0
MOVE A0,*A8(OXPOS)
MOVE *A9(OXPOS),A0
SUBK 10,A0
MOVE A0,*A9(OXPOS)
MOVE *A10(OXPOS),A0
SUBK 10,A0
MOVE A0,*A10(OXPOS)
MOVE *A13(PDATA+256),A0,L
MOVE *A0(OXPOS),A1
SUBK 10,A1
MOVE A1,*A0(OXPOS)
MOVE *A13(PDATA+288),A0,L
MOVE *A0(OXPOS),A1
SUBK 10,A1
MOVE A1,*A0(OXPOS)
DSJ A11,BOUT
MOVE *A13(PDATA+32),A0,L ;@TEMP,A0,L
CALLA DELOBJ
MOVE A13,@MAPOUT,L
CREATE HNTPID,DOTEXT
SLEEP 60*13 ;30
CLR A0
MOVE A0,@MAPOUT,L
MAPDN ;FROM P1/P2 START BUTTONS
MOVE @MAPNUM,A0
SUBK 3,A0
JRNZ NOTHINT
;ORCUS HINTS
; CREATE0 SETDET ;SET DELYDET ON PLAYERS
MOVI HNTPID,A0
CLR A1
NOT A1
CALLA EXISTP
JRZ SKIP
MOVI OBJGONE,A7
CLR A1
CALLA XFERPROC
SKIP MOVI EXITSND,A0
CALLA ONESND
CLR A0
MOVE A0,@HALT
MOVI CLSNEUT|TYPICON|SUBMAN,A0
CLR A1
NOT A1
CALLA EXISTOBJ
* Z BIT SET = NO OBJECT, A0 = 0 *
JRZ NOOR
MOVE *A0(OIMG),A1,L
CMPI ORCHINT,A1
JRNZ NOOR
CALLA DELOBJ
NOOR
;PROCESS BLINKING HEAD
MOVI WARPPID,A0
CALLA KIL1C
DIE
NOTHINT
MOVI BLNKPID,A0
CLR A1
NOT A1
CALLA EXISTP
MMTM SP,A8,A9,A10,A11
CALLA GETA8
CALLA GETA9
CALLA GETA10
CALLA GETA11
MOVI BOU,A7
CLR A1
CALLA XFERPROC
MMFM SP,A8,A9,A10,A11
MOVI HNTPID,A0
CLR A1
NOT A1
CALLA EXISTP
MOVI OBJGONE,A7
CLR A1
CALLA XFERPROC
MOVI EXITSND,A0
CALLA ONESND
MOVI 02AH,A11
BOUT2 SLEEPK 1
MOVE *A8(OYPOS),A0
ADDK 8,A0
MOVE A0,*A8(OYPOS)
MOVE *A9(OYPOS),A0
ADDK 8,A0
MOVE A0,*A9(OYPOS)
MOVE *A10(OYPOS),A0
ADDK 8,A0
MOVE A0,*A10(OYPOS)
MOVE *A13(PDATA+256),A0,L
MOVE *A0(OYPOS),A1
ADDK 8,A1
MOVE A1,*A0(OYPOS)
MOVE *A13(PDATA+288),A0,L
MOVE *A0(OYPOS),A1
ADDK 8,A1
MOVE A1,*A0(OYPOS)
DSJ A11,BOUT2
CALLA DELOBJA8
MOVE A9,A0
CALLA DELOBJ
MOVE A10,A0
CALLA DELOBJ
MOVE *A13(PDATA+256),A0,L
CALLA DELOBJ
MOVE *A13(PDATA+288),A0,L
CALLA DELOBJ
SLEEPK 03DH/2
;SCORE IMAGES HAVE SCROLLED BACK INTO PLACE!
CALLA DMA_SCORE
MOVI 30,A10 ;TIME FOR RINGS
CREATE0 SETDET ;SET DELYDET ON PLAYERS
CLR A9 ;A9=0 FOR UP, 1 FOR RGT
MOVE @MAPNUM,A0
JRZ GT
MOVK 1,A9
GT CREATE ARWPID,ONARRW ;TURN ON UP ARROW
CREATE0 AOF ;ARROW OFF AFTER A TIME
CLR A0
MOVE A0,@HALT
DIE
BLNK
MOVI PTOC,A14
CALLA DO_ALL_STUFF
CALLA ADJSTWTL
MOVE A0,A8
CALLA OBJOFF
MOVI MIS1,A14
MOVE @MAPNUM,A0
JRZ S2
MOVI MIS2,A14
CMPI 1,A0
JRZ S2
MOVI MIS3,A14
S2 CALLA DO_ALL_STUFF
CALLA ADJSTWTL
MOVE A0,A9
CALLA OBJOFF
MOVI YOU2,A14
MOVE @MAPNUM,A0
CMPI 1,A0
JRZ S44
MOVI YOU3,A14
CMPI 2,A0
JRZ S44
MOVI YOU,A14
S44 CALLA DO_ALL_STUFF
CALLA ADJSTWTL
MOVE A0,A10
CALLA OBJOFF
MOVI ORCP,A14
MOVE @MAPNUM,A0
JRZ S3
MOVI PAIN,A14
CMPI 1,A0
JRZ S3
MOVI PAIN2,A14 ;LAST MAP MONSTER TEXT
S3 CALLA DO_ALL_STUFF
CALLA ADJSTWTL
MOVE A0,A11
CALLA OBJOFF
SLEEP 80H
BK
MOVE A8,A0
CALLA OBJON
MOVE A9,A0
CALLA OBJON
MOVE A10,A0
CALLA OBJON
MOVE A11,A0
CALLA OBJON
SLEEPK 30
MOVE A8,A0
CALLA OBJOFF
MOVE A9,A0
CALLA OBJOFF
MOVE A10,A0
CALLA OBJOFF
MOVE A11,A0
CALLA OBJOFF
SLEEPK 10
JRUC BK
BOU
CALLA DELOBJA8
MOVE A9,A0
CALLA DELOBJ
MOVE A10,A0
CALLA DELOBJ
MOVE A11,A0
CALLA DELOBJ
DIE
SCRLUP
;SCROLL ANY TYPTEXT|SUBSCOR UP
MOVI OBJLST,A8,L
KILOBP:
MOVE *A8,A8,L ;GET NEXT
JREQ KILX ;ALL DONE
MOVE *A8(OID),A4
CMPI CLSNEUT|TYPTEXT|SUBSCOR,A4 ;MATCH?
JRNZ KILOBP ;NO
;FOUND ONE
;CREATE PROC TO TAKE CONTROL
MOVE *A13(PROCID),A1
MOVI TAKEME,A7
CALLA GETPRC
JRUC KILOBP ;KILL THE REST
KILX: DIE
TAKEME MOVE *A8(OYVAL),A0,L
MOVE A0,*A13(PDATA),L
MOVI 60,A9
TK0 SLEEPK 1
MOVE *A8(OYPOS),A0
DEC A0
MOVE A0,*A8(OYPOS)
DSJ A9,TK0
TM1 SLEEPK 1
MOVE @MAPOUT,A0
JRNZ TM1
MOVE @TAUNTOUT,A0
JRNZ TM1
MOVE @START,A0
SUBK 11,A0
JAZ SUCIDE
MOVI 60,A9
TK2 SLEEPK 1
MOVE *A8(OYPOS),A0
INC A0
MOVE A0,*A8(OYPOS)
DSJ A9,TK2
SLEEPK 2
MOVE *A13(PDATA),A0,L
MOVE A0,*A8(OYVAL),L
DIE
WRPTBL:
.LONG [300,0],[160,0],SPIN1
.WORD 93,DMAWNZ,CLSDEAD
.LONG 0,0
BX1:
.LONG [40,0],[-200,0],BXTOP
.WORD 472,DMAWNZ|M_NOCOLL,CLSNEUT
.LONG 0,0
BX2:
.LONG [40,0],[-200+028,0],BXMID
.WORD 472,DMAWNZ|M_NOCOLL,CLSNEUT
.LONG 0,0
BX3:
.LONG [40,0],[-200+0190,0],BXTOP
.WORD 472,DMAWNZ|M_NOCOLL|M_FLIPV,CLSNEUT
.LONG 0,0
MIS1:
.LONG [121H,0],[043H,0],MISN1
.WORD 472,DMAWNZ|M_NOCOLL,CLSNEUT
.LONG 0,0
MIS2:
.LONG [120H,0],[049H,0],MISN2
.WORD 472,DMAWNZ|M_NOCOLL,CLSNEUT
.LONG 0,0
MIS3:
.LONG [121H,0],[034H,0],MISN3
.WORD 472,DMAWNZ|M_NOCOLL,CLSNEUT
.LONG 0,0
YOU:
.LONG [140H,0],[09FH,0],YOUARE
.WORD 472,DMAWNZ|M_NOCOLL,CLSNEUT
.LONG 0,0
YOU2:
.LONG [140H,0],[09FH,0],YOUARE2 ;ROAD LEADS HERE!
.WORD 472,DMAWNZ|M_NOCOLL,CLSNEUT
.LONG 0,0
YOU3:
.LONG [140H,0],[07FH,0],YOUARE2
.WORD 472,DMAWNZ|M_NOCOLL,CLSNEUT
.LONG 0,0
ORCP:
.LONG [0B0H,0],[015,0],ORCUS
.WORD 472,DMAWNZ|M_NOCOLL,CLSNEUT
.LONG 0,0
PAIN:
.LONG [0A7H,0],[0DH,0],PAINFUL
.WORD 472,DMAWNZ|M_NOCOLL,CLSNEUT
.LONG 0,0
PAIN2:
.LONG [0C1H,0],[0DH,0],SNEAK
.WORD 472,DMAWNZ|M_NOCOLL,CLSNEUT
.LONG 0,0
PTOC:
.LONG [74H,0],[0F0H,0],PRESS2
.WORD 470,DMAWNZ|M_NOCOLL,CLSNEUT
.LONG 0,0
WRP:
.LONG [080H,0],[0FFD8H-20,0],WARP
.WORD 470,DMAWNZ|M_NOCOLL,CLSNEUT
.LONG 0,0
IQ1:
.LONG [404,0],[47,0],IRAQMAP1
.WORD 470,DMAWNZ|M_NOCOLL,CLSNEUT
.LONG 0,0
IQ2:
.LONG [562,0],[47,0],IRAQMAP2
.WORD 470,DMAWNZ|M_NOCOLL,CLSNEUT
.LONG 0,0
IQ3A:
.LONG [562+112,0],[47-24,0],MISSION1
.WORD 471,DMAWNZ|M_NOCOLL,CLSNEUT
.LONG 0,0
IQ3B:
.LONG [562+112,0],[47-24,0],MISSION2
.WORD 471,DMAWNZ|M_NOCOLL,CLSNEUT
.LONG 0,0
IQ3C:
.LONG [562+112,0],[47-24,0],MISSION3
.WORD 471,DMAWNZ|M_NOCOLL,CLSNEUT
.LONG 0,0
IQ4:
.LONG [404+45,0],[47+3,0],PDOME
.WORD 471,DMAWNZ|M_NOCOLL,CLSNEUT
.LONG 0,0
IQ5:
.LONG [562+62,0],[47+70,0],POINTER
.WORD 471,DMAWNZ|M_NOCOLL,CLSNEUT
.LONG 0,0
JMPSND .WORD >F48E,>18,>813D,0 ;FIEND JUMP SND
TXTSND2 .WORD >F3F7,>8,>80B1,0
.DEF KEY_TOTAL
.REF STRLNRM,RD15FONT,STRCNRM,HEXTOASC,CYCSPECT
KEY_TOTAL
MOVE @HALT,A0
JANZ SUCIDE
MOVI COLRPID,A0
CALLA KIL1C
CREATE COLRPID,CYCSPECT ;START COLOR CYCLE PROCESS
SLEEPK 32
;A8=0C0CH OR 0F0FH
MOVK 7,A0
MOVE A0,@KEEP3
TOP0 MOVK 19,A0
MOVE A0,@KEEP2
MOVI JMPSND,A0
CALLA ONESND
TOP
MOVI 3E3EH,A6
MOVI [80,0C2H],A9 ;SCRN Y/X
MOVI RD15FONT,A11 ;FONT TABLE
CLR A0
MOVE A0,@WRLD
MOVK 1,A10 ;Y,X SPACING BETWEEN CHARCTERS
CLR A0
MOVI LINE1,A8
JSRP STRCNRM
MOVI 3E3EH,A6 ;COLOR CYCLE DIGITS
move @P1DATA+TKEYS,a0
move @P2DATA+TKEYS,a8
add a0,a8
calla HEXTOASC
MOVI [80,0140H],A9 ;SCRN Y/X
CLR A0
JSRP STRLNRM
SLEEPK 1
MOVE @HALT,A0
JANZ LNM
MOVE @KEEP2,A0
DEC A0
MOVE A0,@KEEP2
JRNN TOP
SLEEPK 10
MOVE @KEEP3,A0
DEC A0
MOVE A0,@KEEP3
JRNN TOP0
MOVI TXTSND2,A0
CALLA ONESND
LNM MOVI COLRPID,A0
CALLA KIL1C
DIE
;LINE1 .byte "TOTAL KEYS COLLECTED:",0
LINE1 .byte "TOTAL COMBINED KEYS:",0
.EVEN
.END