************************************************************** * * 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