************************************************************** * * Software: Mark Turmell * Initiated: Dec 18,1990 * * Modified: * * COPYRIGHT (C) 1991 WILLIAMS ELECTRONICS GAMES, INC. * *.Last mod - 9/24/91 23:45 ************************************************************** .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" ; ;SOUND HEADERS USED ; .REF GETSND,BEEP1,STATSND,SLIDEIN,EXITSND,TUNE3,EXP2 .REF TUNE3O,WRPSND,TUNE2 ; ;SYMBOLS EXTERNALLY DEFINED ; .REF STRT_FORT,DEATHS .REF PORT_MOD,AIRRECT3A,AIRBRECT3,PATHAIR2,TARGETST,FORDBG .REF frypbg_t,FROMSHK .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,STRT_G,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,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,FRANIM_DIE,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 GETCOS,FON15X,FON15W,FON15V,FON15M,TNTIT .REF DELOFFBOTL .REF P1CTRL,P2CTRL .REF GETSIN,RANGRAND .REF CLNICN,JOY_UPDATE,WARPTXT,OFFSCRN .REF SEND_TOP,DOLORD,BGND_UD1,KILBGND .ref anim_killall,NO_START,INTRO,STATSNDS ;SYMBOLS DEFINED IN THIS FILE ; .DEF NOCAN2 ;,KEEP_WARP .DEF STOPPLYR,INAWARP,JET_KILLS,CMBAK,YESPWRD,LOCK_NUM .DEF INST_WARP .DEF DSRTNEW_MOD .DEF HLPON,LSHIT,LSDMG,BIGMAP,BGDO,COMEOUT,WARPOUT,KPARWP,GOBACK .DEF ALIGNXY,MAPOUT,MAPDN,WARPER,STRT_WRP,WORDS .DEF BOX_OUT,INFO_BOX,KILJOY,WAITTNT,TAUNTOUT,KP_TAUNT,TWAS1 .DEF AFTR_WRP,MINE_FLG,TNT_TYPE ; ;UNINITIALIZED RAM DEFINITIONS ; ;EQUATES ; MAXHITS .EQU 10 ;DIFFICULTY SETTING ADLTA .EQU 0381BH ;(411775/(160/2)) ; ; LASER/BLADES DATA STRUCTURE ; PTRX .EQU PDATA ;UHW ;LAST X PTRY .EQU PDATA+16 ;UHW ;LAST Y ;ANIMTIK .EQU PDATA+32 ;UHL ;FRAME SLEEP TIME THETA .EQU PDATA+64 ;SHL ;CURRENT PROGRESSION DELTA .EQU PDATA+96 ;SHL ;DELTA ANGLE LEG .EQU PDATA+128 ;UHL LEG OF PLAYER WHO COLLECTED ME HITS .EQU PDATA+160 ;UHW ;HIT CNTR ; ; ;EQUATES FOR THIS FILE ; .BSS JET_KILLS,16 ;FOR BONUS .BSS INAWARP,16 .BSS TNT_TYPE,16 .BSS KEEP_WARP,16 .BSS AFTR_WRP,16 .BSS TAUNTOUT,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 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 .TEXT 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 WARP_INFO ;BRING PUT WARP INFO BOX AND TEXT MOVE @LOCK_NUM,A0 CMPI 6,A0 JRZ WDIE MOVI BX1A,A14 CALLA DO_ALL_STUFF CALLA ADJSTWTL MOVE A0,*A13(PDATA),L MOVI BX2A,A14 CALLA DO_ALL_STUFF CALLA ADJSTWTL MOVE A0,*A13(PDATA+32),L MOVI BX3A,A14 CALLA DO_ALL_STUFF CALLA ADJSTWTL MOVE A0,*A13(PDATA+64),L MOVE A13,@INFO_BOX,L MOVI SLIDEIN,A0 CALLA ONESND MOVK 13H,A11 WVOUT SLEEPK 1 MOVE A13,A10 MOVK 3,A9 WVOUT1 MOVE *A10(PDATA),A0,L MOVE *A0(OYPOS),A1 SUBK 5,A1 MOVE A1,*A0(OYPOS) ADDK 32,A10 DSJ A9,WVOUT1 DSJ A11,WVOUT CREATE TYPTEXT,DOT SLEEP 130+150+30 BOX_OUT ;KILL ALL TEXT MOVI TYPTEXT,A0 CLR A1 MOVE A1,@INFO_BOX,L CALLA KIL1C CALLA ERASE_TXT MOVI EXITSND,A0 CALLA ONESND MOVI 23H,A11 WVOU SLEEPK 1 MOVE A13,A10 MOVK 3,A9 WVOU1 MOVE *A10(PDATA),A0,L MOVE *A0(OXPOS),A1 ADDK 7,A1 MOVE A1,*A0(OXPOS) ADDK 32,A10 DSJ A9,WVOU1 DSJ A11,WVOU MOVE *A13(PDATA),A0,L CALLA DELOBJ MOVE *A13(PDATA+32),A0,L CALLA DELOBJ MOVE *A13(PDATA+64),A0,L CALLA DELOBJ WDIE DIE DOT CLR A0 MOVE A0,@WRLD MOVI RD7FONT,A11 ;FONT TABLE MOVK 1,A10 ;Y,X SPACING BETWEEN CHARCTERS MOVI WOBJ1,A8 ;WARPED TO: MOVI [09EH,0E7H],A9 ;SCRN Y/X MOVI 2525H,A6 ; MOVK 2,A0 JSRP STRLNRMO ;BASED ON WARP #, PRINT OUT WARPED TO AREA: MOVI BLIP,A0 CALLA ONESND MOVE @LOCK_NUM,A8 SLL 5,A8 ADDI WARPTX1,A8 MOVE *A8,A8,L MOVI [09EH+9,0E7H],A9 ;SCRN Y/X MOVI 0C0CH,A6 ; MOVK 2,A0 JSRP STRLNRMO MOVI BLIP,A0 CALLA ONESND MOVI WOBJ2,A8 ;WARP CODE: MOVI [0B4H,0E7H],A9 ;SCRN Y/X MOVI 2525H,A6 ; MOVK 2,A0 JSRP STRLNRMO MOVE @LOCK_NUM,A8 SLL 5,A8 ADDI FWARPTX2,A8 MOVE *A8,A8,L MOVI BLIP,A0 CALLA ONESND MOVI 200,A0 CALLA RANDPER JRNC NOPASS ;BR=NO PASSWORD THIS TIME MOVE @LOCK_NUM,A8 SLL 5,A8 ADDI WARPTX2,A8 MOVE *A8,A8,L NOPASS MOVI [0B4H,0E7H+80],A9 ;SCRN Y/X MOVI 0C0CH,A6 ; MOVK 2,A0 JSRP STRLNRMO MOVI BLIP,A0 CALLA ONESND MOVI WOBJ2A,A8 ;DIFFICULTY: MOVI [0B4H+9,0E7H],A9 ;SCRN Y/X MOVI 2525H,A6 ; MOVK 2,A0 JSRP STRLNRMO MOVI BLIP,A0 CALLA ONESND MOVE @LOCK_NUM,A8 SLL 5,A8 ADDI WARPTX2A,A8 MOVE *A8,A8,L MOVI [0B4H+9,0E7H+87],A9 ;SCRN Y/X MOVI 3A3AH,A6 ; MOVK 2,A0 JSRP STRLNRMO MOVI BLIP,A0 CALLA ONESND MOVI WOBJ3,A8 ;ADVICE: MOVI [0CAH,0E7H],A9 ;SCRN Y/X MOVI 2525H,A6 ; MOVK 2,A0 JSRP STRLNRMO MOVI BLIP,A0 CALLA ONESND MOVE @LOCK_NUM,A8 SLL 5,A8 ADDI WARPTX3,A8 MOVE *A8,A8,L MOVI [0CAH+9,0E7H],A9 ;SCRN Y/X MOVI 0C0CH,A6 ; MOVK 2,A0 JSRP STRLNRMO MOVI BLIP,A0 CALLA ONESND MOVE @LOCK_NUM,A8 SLL 5,A8 ADDI WARPTX4,A8 MOVE *A8,A8,L MOVI [0CAH+18,0E7H],A9 ;SCRN Y/X MOVI 0C0CH,A6 ; MOVK 2,A0 JSRP STRLNRMO DIE BLIP .WORD >F3F7,>20,>8099,0 ;BLIP SND WARPTX1 .LONG WP1,WP1A,WP1B,WP1C,WP1D,WP1E,0,WP1G WARPTX2 .LONG WP2,WP2A,WP2B,WP2C,WP2D,WP2E,0,WP2G FWARPTX2 .LONG FWP2,FWP2A,FWP2B,FWP2C,FWP2D,FWP2E,0,FWP2G WARPTX2A .LONG WPD2,WPD2A,WPD2B,WPD2C,WPD2D,WPD2E,0,WPD2G WARPTX3 .LONG WP3,WP3A,WP3B,WP3C,WP3D,WP3E,0,WP3G WARPTX4 .LONG WP4,WP4A,WP4B,WP4C,WP4D,WP4E,0,WP4G WP1 .BYTE "BIO-NUCLEAR ZONE",0 ;MIDDLE OF DESERT FWP2 .BYTE "?UL?",0 WP2 .BYTE "Z??U",0 ;GETS YOU TO WAVE BEFORE TAUNT WPD2 .BYTE "05",0 WP3 .BYTE "GIVE UP NOW! ADD",0 WP4 .BYTE "EXTRA SAUCE!",0 WP1A .BYTE "BONUS HOSTAGES",0 ;LOWER LEFT OF DESERT FWP2A .BYTE "G??B",0 WP2A .BYTE "GOO?",0 ;GETS YOU DESERT LCKDWN #1 WPD2A .BYTE "08",0 WP3A .BYTE "DETONATE MINES",0 WP4A .BYTE "AVOID GOOB JOBS",0 WP1B .BYTE "NEAR FACTORY",0 ;FROM TRIPLE GUNNER FWP2B .BYTE "??UD",0 WP2B .BYTE "SC?D",0 ;GETS YOU TO ORCUS WPD2B .BYTE "07",0 WP3B .BYTE "SHOOT BARREL TO",0 WP4B .BYTE "DELAY EXPLOSION!",0 WP1C .BYTE "BONUS KEYS!",0 ;1ST HANGAR IN AIRPORT FWP2C .BYTE "B?NZ",0 ;GETS YOU TO AFTER RACKUP #1 WP2C .BYTE "L?PS",0 ;GETS YOU TO END OF ROAD #1 WPD2C .BYTE "10",0 WP3C .BYTE "EXPERIENCE PAIN",0 WP4C .BYTE "BEFORE PLEASURE!",0 WP1D .BYTE "REACTOR INTERIOR",0 ;MIDDLE OF AIRPORT GOING UP FWP2D .BYTE "L??K",0 ;GETS YOU TO END OF TARMAC WP2D .BYTE "?ICK",0 ;AREA WHERE SPIDER EGGS ARE WPD2D .BYTE "07",0 WP3D .BYTE "KILL MR. BUTANE",0 WP4D .BYTE "WITH MANY BOMBS!",0 WP1E .BYTE "SECRET AIRPLANES",0 ;ON ROAD GOING INTO BIG FORT FWP2E .BYTE "T?ID",0 ;GETS YOU TO START OF BIGFORT WP2E .BYTE "?O?D",0 WPD2E .BYTE "10",0 WP3E .BYTE "GRAB ROCKET PACKS",0 WP4E .BYTE "FLOAT OVER MINES!",0 ;WP1F .BYTE "ELECTRIC CHAIR",0 ;ON ROAD GOING INTO BIG FORT ;FWP2F .BYTE "SHOK",0 ;GETS YOU TO START OF BIGFORT ;WP2F .BYTE "SHOK",0 ;WPD2F .BYTE "10",0 ;WP3F .BYTE "WHACK ON BUTTON",0 ;WP4F .BYTE "TO ESCAPE DEATH!",0 WP1G .BYTE "EASY FREE MAN!",0 ;IN AIRPRT FWP2G .BYTE "BLO?",0 ;GETS YOU TO SECRET PATH WP2G .BYTE "B??W",0 WPD2G .BYTE "4",0 WP3G .BYTE "SUPER HERO GAMES",0 WP4G .BYTE "ARE FOR DOGS!",0 .EVEN BX1A: .LONG [0E3H,0],[0F9H,0],BXTOP .WORD 472,DMAWNZ|M_NOCOLL,CLSDEAD .LONG 0,0 BX2A: .LONG [0E3H,0],[0FEH,0],BXMID .WORD 472,DMAWNZ|M_NOCOLL,CLSDEAD .LONG 0,0 BX3A: .LONG [0E3H,0],[0146H,0],BXTOP .WORD 472,DMAWNZ|M_NOCOLL|M_FLIPV,CLSDEAD .LONG 0,0 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 SLEEP 90 ;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 ;MAP 3 TEXT HERE MOVI T3OBJ3,A8 ;OBJECTIVE 1 MOVI [45-25-1,0101],A9 ;SCRN Y/X MOVI 3939H,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI T3OBJ4,A8 ;OBJECTIVE 1 MOVI [55-25-1,0101],A9 ;SCRN Y/X MOVI 3939H,A6 ; MOVK 3,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 3939H,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI T2OBJ1,A8 ;OBJECTIVE 1 MOVI [55-25-1,0101],A9 ;SCRN Y/X MOVI 3939H,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI T2OBJ2,A8 ;OBJECTIVE 1 MOVI [65-25-1,0101],A9 ;SCRN Y/X MOVI 3939H,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI T2OBJ3,A8 ;OBJECTIVE 1 MOVI [75-25-1,0101],A9 ;SCRN Y/X MOVI 3939H,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI T2OBJ4,A8 ;OBJECTIVE 1 MOVI [85-25-1,0101],A9 ;SCRN Y/X MOVI 3939H,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI T2OBJ5,A8 ;OBJECTIVE 1 MOVI [100-25-1,0101],A9 ;SCRN Y/X MOVI 0C0CH,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI T2OBJ6,A8 ;OBJECTIVE 1 MOVI [110-25-1,0101],A9 ;SCRN Y/X MOVI 3939H,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI T2OBJ7,A8 ;OBJECTIVE 1 MOVI [120-25-1,0101],A9 ;SCRN Y/X MOVI 3939H,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI T2OBJ8,A8 ;OBJECTIVE 1 MOVI [130-25-1,0101],A9 ;SCRN Y/X MOVI 3939H,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI T2OBJ9,A8 ;OBJECTIVE 1 MOVI [145-25-1,0101],A9 ;SCRN Y/X MOVI 3939H,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI T2OBJ10,A8 ;OBJECTIVE 1 MOVI [155-25-1,0101],A9 ;SCRN Y/X MOVI 3939H,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI T2OBJ11,A8 ;OBJECTIVE 1 MOVI [170-25-1,0101],A9 ;SCRN Y/X MOVI 3939H,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI T2OBJ11A,A8 ;OBJECTIVE 1 MOVI [180-25-1,0101],A9 ;SCRN Y/X MOVI 3939H,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI T2OBJ11B,A8 ;OBJECTIVE 1 MOVI [190-25-1,0101],A9 ;SCRN Y/X MOVI 3939H,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI T2OBJ12,A8 ;OBJECTIVE 1 MOVI [205-25-1,0101],A9 ;SCRN Y/X MOVI 3939H,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI T2OBJ13,A8 ;OBJECTIVE 1 MOVI [215-25-1,0101],A9 ;SCRN Y/X MOVI 3939H,A6 ; MOVK 3,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 3939H,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI OBJ4,A8 ;OBJECTIVE 1 MOVI [55-25-1,0101],A9 ;SCRN Y/X MOVI 3939H,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI OBJ5,A8 ;OBJECTIVE 1 MOVI [70-25-1,0101],A9 ;SCRN Y/X MOVI 3939H,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI OBJ6,A8 ;OBJECTIVE 1 MOVI [80-25-1,0101],A9 ;SCRN Y/X MOVI 3939H,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI OBJ7,A8 ;OBJECTIVE 1 MOVI [95-25-1,0101],A9 ;SCRN Y/X MOVI 3939H,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI OBJ8,A8 ;OBJECTIVE 1 MOVI [105-25-1,0101],A9 ;SCRN Y/X MOVI 3939H,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI OBJ9,A8 ;OBJECTIVE 1 MOVI [120-25-1,0101],A9 ;SCRN Y/X MOVI 3939H,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI OBJ10,A8 ;OBJECTIVE 1 MOVI [130-25-1,0101],A9 ;SCRN Y/X MOVI 3939H,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI OBJ11,A8 ;OBJECTIVE 1 MOVI [145-25-1,0101],A9 ;SCRN Y/X MOVI 3939H,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI OBJ12,A8 ;OBJECTIVE 1 MOVI [155-25-1,0101],A9 ;SCRN Y/X MOVI 3939H,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI OBJ13,A8 ;OBJECTIVE 1 MOVI [165-25-1,0101],A9 ;SCRN Y/X MOVI 3939H,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI OBJ14,A8 ;OBJECTIVE 1 MOVI [175-25-1,0101],A9 ;SCRN Y/X MOVI 3939H,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI OBJ15,A8 ;OBJECTIVE 1 MOVI [190-25-1,0101],A9 ;SCRN Y/X MOVI 3939H,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI OBJ1,A8 ;OBJECTIVE 1 MOVI [180-1,0101],A9 ;SCRN Y/X MOVI 0C0CH,A6 ; MOVK 3,A0 JSRP STRCNRMO MOVI OBJ2,A8 ;OBJECTIVE 1 MOVI [190-1,0101],A9 ;SCRN Y/X MOVI 0C0CH,A6 ; MOVK 3,A0 JSRP STRCNRMO READ SLEEP 20*60 OBJO ;KILL ALL TEXT OBJECTIVES CALLA ERASE_TXT 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 WOBJ1 .BYTE "WARPED TO:",0 WOBJ2 .BYTE "WARP CODE:",0 WOBJ2A .BYTE "DIFFICULTY:",0 WOBJ3 .BYTE "ADVICE:",0 ;MISN 1 TEXT OBJ1 .BYTE "PENETRATE",0 OBJ2 .BYTE "PLEASURE DOME",0 OBJ3 .BYTE "DESTROY GENERAL",0 OBJ4 .BYTE "AKHBOOB'S ARMY",0 OBJ5 .BYTE "SEEK OUT UNKNOWN",0 OBJ6 .BYTE "LIFE FORMS",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 "PLEASURE DOMES",0 T2OBJ13 .BYTE "ARE IN THIS GAME!",0 ;MISN 3 TEXT T3OBJ3 .BYTE "MISION 3 TEXT",0 T3OBJ4 .BYTE "END OF GAME",0 .EVEN XOFS .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] GOBACK SLEEP 120 MOVE @HULK_CNT,A0 JRNZ GOBACK MOVE @WAVE,A0 CMPI 23,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 CREATE 0,SENDGRN2 SLEEPK 15 MOVE A8,A0 CALLA OBJON CREATE NEUTPID,DO_NEUTS JRUC WRP3 DO_NEUTS MOVK 1,A8 CREATE FUTUREPID,bomb_neutron DON1 SLEEP 18*60 MOVE @HALT,A0 JRNZ DON1 JRUC DO_NEUTS INST_WARP SLEEP 180 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 CREATE 0,SENDGRN2 SLEEPK 15 MOVE A8,A0 CALLA OBJON JRUC WRP3 STRT_WRP ;A8=SHELL OF WARP ; MOVE A8,*A13(PDATA),L ;TURN ON ALL PIECES MOVE *A8(OYVAL),A10,L MOVE *A8(OXVAL),A11,L MOVE A8,A0 CALLA DELOBJ ;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 WRP3 CREATE WARPPID,ANISPN MOVE A0,*A13(PDATA),L ;PUT SPIN PROC INTO WARPER PDATA WTP1 SLEEP 500 CALLA SCRTST JRZ WTP1 ;SKIPPED GETTING WARP MOVE A8,A0 CALLA DELOBJ MOVE *A13(PDATA),A0,L ;PROCESS SPINNING THE DISC CALLA KILL DIE 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 CREATE 0,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 CREATE 0,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 CREATE 0,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 MOVK 1,A1 JSRP FRANIM 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 FRANIM_DIE 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 FRANIM_DIE 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 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,0 PALCNO .LONG 5*32*32+5*32+5,0 PALENO .LONG 0*32*32+0*32+0,0 PALCNO2 .LONG 11*32*32+7*32+0,0 PALCNO3 .LONG 3*32*32+4*32+5,0 CMBAK ;COMING BACK FROM A LOCKDOWN MOVI WRPSND,A0 CALLA ONESND 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 CREATE 0,SETDET SLEEPK 2 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 6,A1 JRNZ DC1 ;FADE IN RAM COLOR LIST MOVI RAMNO,A0 JRUC DCOLR DC1 CMPI 3,A1 JRLT DCOLR MOVI PALDNO2,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 SLEEPK 5 ;NO MORE GUNNERS FOR AWHILE CLR A0 MOVE A0,@AFTR_WRP MOVE A0,@INAWARP SLEEPK 5 ;10 CREATE 0,SBOMB SLEEP 60 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! ; MOVI 3100,A0 ; CALLA KIL1C ; CALLA DMA_SCORE ; CLR A0 ; MOVE A0,@TAUNTOUT ; MOVE @DEATHS,A0 ; BTST 0,A0 ; JRZ EV2 ; MOVE @PLYRPRCS,A0,L ; MOVE A0,A7 ; CALLA WARP_KIL ;KILL PLAYER ;EV2 ; MOVE @DEATHS,A0 ; BTST 1,A0 ; JRZ EV3 ; MOVE @PLYRPRCS+32,A0,L ; MOVE A0,A7 ; CALLA WARP_KIL ;KILL PLAYER ;EV3 CLR A0 MOVE A0,@DEATHS DIE KILL_SHOK MOVE @DEATHS,A0 BTST 0,A0 JRZ EV2 MOVE @PLYRPRCS,A0,L MOVE A0,A7 CALLA WARP_KIL ;KILL PLAYER EV2 MOVE @DEATHS,A0 BTST 1,A0 JRZ EV3 MOVE @PLYRPRCS+32,A0,L MOVE A0,A7 CALLA WARP_KIL ;KILL PLAYER EV3 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 CALLA STRT_G ;CYCLE GOOB POOL MOVE @LOCK_NUM,A0 CMPI 6,A0 JRZ EVAL DIE SETDET 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 MOVK 30,A10 ;TIME RINGS ARE ON MOVE @STATUS,A0 BTST 0,A0 JRZ PP1 MOVK 1,A9 CREATE RNG1PID,RINGS PP1 MOVE @STATUS,A0 BTST 1,A0 JRZ PP2 MOVK 2,A9 CREATE RNG2PID,RINGS PP2 DIE PALDNO .LONG 11*32*32+7*32+0,0 PALDNO2 .LONG 5*32*32+5*32+5,0 WRPSX .WORD 010DH,061H,307H,0D42H,01485H,09CH,5,13D1H,0 COMEOUT ;PLAYER HAS TOUCHED WARP BUTTON ;SET OFF SMART BOMB ;A9=PLYR IMG PTR WHO GOT ME ;A8=WARP DISC IMG MOVI NEUTPID,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 CALLA ADDBMB MOVE *A8(OZPOS),A0 CMPI 69,A0 JRZ CMBAK CMPI 70,A0 *************************************************************************** JRNZ CM2 ;TAKE OUT TO TEST A WARP *************************************************************************** ;INSTANT WARP DISC ;A9=PLYR IMG PTR WHO GOT ME FOR SMART BOMB 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 CALLA KILL_SHOK MOVE @KEEP_WARP,A2 JRUC NOCAN WTDMA SLEEP 050H CALLA DMA_SCORE DIE EXSC *************************************************************************** ;GET WARP # BASED ON XPOS IN WORLD! ; MOVI 6,A0 ;PUT IN TO TEST A WARP ; MOVE A0,@LOCK_NUM ; JRUC ASS *************************************************************************** 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 1ST ONE CLR A2 JRUC LCKEX NXT1 SUB A0,A3 ABS A3 SUBK 2,A3 JRHI NXT LCKEX MOVI 50,A0 CALLA RANDPER JRNC NOCAN ;CAN THIS WARP TO SHOCK SCENE! MOVE A2,@KEEP_WARP MOVK 6,A2 ;PUT IN TO TEST A WARP NOCAN MOVE A2,@LOCK_NUM *************************************************************************** ;ASS ;PUT IN TO TEST A WARP *************************************************************************** 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 ONESND 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 CREATE 0,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 CREATE 0,SBOMB CLR A0 MOVE A0,@WFLG MOVE A0,@MINE_FLG DIE LCK_INFO .LONG LCK1,LCK2,LCK3,LCK4,LCK5,LCK6,LCK7,LCK8 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 .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 .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 10 ;# OF LAND MINES RANDOMLY PLACED .LONG ICN8 ;ICON LIST FOR THIS LOCKDOWN .LONG SPEC4 ;SPECIAL STUFF FOR THIS LOCKDWN LCK4 .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 4 ;# 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 2 ;# 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 3 ;# 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 SPEC8 SLEEP 60 MOVI T72PID,A0 CLR A1 NOT A1 CALLA EXISTP JRNZ SPEC8 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 MOVE @KEEP_P,A9,L CREATE 0,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 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,17,1,8,5A0H,18,1,1,0ABH,0 .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 DIE SPEC3 CREATE 0,DOUBLE ;TWO SETS OF ICONS! CALLA STRT_G ;CYCLE GOOB POOL MOVI PONDPID,A0 ;POND PROC MOVI 10*60,A2 CALLA KOP_1C ;KNOCK OUT FOR THIS LONG SLEEP 2*60*60-15*60 ;LENGTH OF WAVE BEFORE JEEPS START MOVI 43CH,A10 SPEC3B SLEEPK 1 MOVE @WORLDTLY,A0,L SUBI [0,04000H],A0 MOVE A0,@WORLDTLY,L CALLA MAYBE_UD1 DSJ A10,SPEC3B MOVE A10,@JET_KILLS ;FOR JEEPS ESCAPED 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 ;HUT LOCKDOWN MOVI [-16,0],A9 ;Y ADD IN VALUE CREATE 0,ZONE_TXT2 DIE SPEC2 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 CREATE 0,POL2 ;BRING ON SIDE POOL CALLA 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 MOVI 180,A6 MOVE @WORLDTLY,A4,L SRL 16,A4 ADDI 127,A4 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,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 PS2 MOVE @START,A0 CMPI 11,A0 JRZ PS2 MMTM SP,A4,A5 ; MOVE A1,A8 CLR A8 CREATE FUTUREPID,BONUS_MAN MMFM SP,A4,A5 PS2 MOVI 220,A6 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 A1,A8 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 ; MOVE *A8(OXVAL),A0,L ; SUBI [3,0],A0 ; MOVE *A8(OYVAL),A1,L ; ADDI [60,0],A1 MOVI PLAYER,A2 MOVI 71,A3 MOVI DMAWNZ|M_PIXSCAN,A4 MOVI CLSNEUT|TYPICON|SUBMAN,A5 CLR A6 CLR A7 CALLA BEGINOBJ2 BM SLEEP 07FFFH JRUC BM XOV .LONG [177,0],[217,0] TXTSND1 .WORD >F3F7,>8,>80AE,0 CM2 CREATE 0,SBOMB CREATE 0,SPREAD MOVI TXTSND1,A0 CALLA ONESND MOVE A8,*A13(PDATA+32),L ;KEEP DISC IMG PNTR CALLR KILJOY SLEEPK 8 CALLR STOPPLYR MOVE *A10(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 CREATE 0,INSTRUCT CREATE 0,WTIME CREATE 0,WARW MOVE A0,A10 CREATE 0,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 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 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 CREATE 0,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 ICONPID,A0 CALLA KIL1C YRT MOVI WRPSND,A0 CALLA ONESND ;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 CALLA DELOBJ MOVE A8,A0 ;DELETE WARP PANEL CALLA DELOBJ 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 MOVE A8,A0 CALLA DELOBJ 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 0,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 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 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 MOVE A8,A0 ;DELETE WARP PANEL CALLA DELOBJ 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 [0A80H-2,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 7,A9 ;6=1 PIXEL OF SCROLL! ; MOVE A9,@TARGET_NUM ;FIRST TARGET FOR SCROLL 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 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 JRUC WRPDN 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 CREATE 0,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 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 CREATE 0,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 CALLA 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 [-0DAH,0],A3 MOVI [-0EBFH,0],A4 CALLR MOVESQRS MOVI 0E4H,a0 move a0,@WORLDTLX+16 movi 127EH,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 LOCKUP CLRIT MOVE *A6+,A0,L CALLA OBJOFF JRUC DGD PASWRDS: .STRING "BOOF" ;=41H-5AH, 20H=SPACE - START=1 REACTOR ON SCRN .STRING "BLOW" ; 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 "SCUD" ; 6 - BEFORE ORCUS .STRING "BENZ" ; 7 - ROAD AFTER RACKUP .STRING "LIPS" ; 8 - END OF 1ST ROAD .STRING "LICK" ; 9 - AFTER PLANE TARMAC AREA .STRING "SHOK" ; 10 - AFTER PLANE TARMAC AREA .STRING "++++" ;NOT USED 11 - BACK FROM SHOCK .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 ;6 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 MOVE A8,A0 CALLA DELOBJ DIE 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 MOVK 6,A0 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 TLST,A0 MOVE *A0,A1,L MOVE *A8(OFLAGS),A4 CALLA ANI ; MOVE *A13(PDATA+16),A0 SLL 5,A0 ADDI TLST,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 MOVE A8,A0 CALLA DELOBJ MOVE A9,A0 CALLA DELOBJ DIE TLST .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 SLEEPK 4 MOVI [022H,0],A0 MOVI [098H,0],A1 MOVE @WAVE,A2 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 MOVE A8,A0 CALLA DELOBJ DIE 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 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 @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,@timeron ;do not accumulate seconds MOVE A13,@KP_TAUNT,L MOVE A3,@WFLG MOVE A10,@TNT_TYPE ;0=TAUNT ONE,1=RACK UP ONE 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 CREATE 0,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 031,A9 MOVI RMOD,A10 ;SHOW HOME BASE VIEW SCREEN MOVE @TNT_TYPE,A1 JRNZ TAG1Z MOVI TUNE3,A0 CALLA ONESND JRUC TAG1 TAG1Z MOVI RMOD2,A10 ;SHOW HOME BASE VIEW SCREEN MOVK 028,A9 MOVE A0,@BAKMODS,L MMTM SP,A9,A10 CALLA INCOM_TRAN MMFM SP,A9,A10 ;CONTINUE CONGRATS MUSIC 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 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 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 CMPI 1,A0 JRNZ NORACK CREATE 0,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 CREATE 0,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 CREATE 0,SETDET ;SET DELYDET ON PLAYERS ;CHANGE TO A NEW BMOD HERE MOVE @WAVE,A0 CMPI 16,A0 JRNZ NOTRD ;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 CLR A1 MOVE A1,@IRQSKYE JSRP DELSTUF CALLA KILBGND SLEEP 40 CALLA CLNPAL MOVK 10,A10 ;HUT LOCKDOWN MOVI [-16,0],A9 ;Y ADD IN VALUE CREATE 0,ZONE_TXT2 SLEEP 190H 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+THSTGS,W MOVE A0,@P2DATA+THSTGS,W MOVE A0,@FREETOT 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 ; CALLA BGND_UD1 SLEEPK 2 CALLA BGND_UD1 MOVI PALCNO,A0 ;FADE IN GREY AUTOPAL ALSO MOVK 2,A1 CALLA FADEIN MOVI PALBNO,A0 CALLA FB_FADEIN CREATE 0,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 0,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 0,DOUBLE 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 ONESND ;TURN ON ROAD MUSIC ALSO SLEEP 50 MOVI TUNE2,A0 CALLA ONESND DIE 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 ONESND 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 CREATE 0,DOUBLE MOVI SIT2,A0 MOVE A0,@SITLST,L ; MOVI TUNE3O,A0 ;START DESERT MUSIC AGAIN ; CALLA ONESND SLEEPK 20 MOVI TUNE2,A0 CALLA ONESND 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 ; CALLA SCORE_CYC ;CYCLE SCOREBOARD 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 .long RACKBMOD ;this is from blimp (module name) .word 203H,>A7E ;x,y start pos. .long >ffffffff RMOD2 ;AFTER RACKUP .long RACKBMOD ;this is from blimp (module name) .word 1A7H+46,0 ;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 CREATE 0,SCRLUP CREATE 1239,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 1238,DOTEXT SLEEP 60*20 ;30 CLR A0 MOVE A0,@MAPOUT,L MAPDN ;FROM P1/P2 START BUTTONS MOVI 1239,A0 CLR A1 NOT A1 CALLA EXISTP MMTM SP,A8,A9,A10,A11 CALLA GETA8 CALLA GETA9 CALLA GETA10 CALLA GETA11 MOVI BOU,A7 CALLA XFERPROC MMFM SP,A8,A9,A10,A11 MOVI 1238,A0 CLR A1 NOT A1 CALLA EXISTP MOVI OBJO,A7 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 MOVE A8,A0 CALLA DELOBJ 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 CREATE 0,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 CREATE 0,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 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 PAIN,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 MOVE A8,A0 CALLA DELOBJ 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 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],[043H,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 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 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 HLPON: MMTM SP,A1,A7,A9,A10 MOVE A0,A9 ;A9=LEG MOVE *A0(OPLINK),A0,L MOVE *A0(LSRPTR),A0,L JRZ SKP MOVE *A0(OPLINK),A0,L CLR A1 MOVE A1,*A0(HITS) JRUC SKP2 SKP CREATE 0,LASER SKP2 CALLA CLNICN MOVI GETSND,A0 CALLA ONESND MMFM SP,A1,A7,A9,A10 RETS ; DO LASER MOVEMENT LOGIC LASER: ;A9=LEG IMG PNTR OF PLAYER WHO TOUCHED ME CLR A0 MOVE A0,*A13(MYPLYR) ;THIS BLADE WILL NOT SCORE PTS ;VEHICHLES USE THE BLADE OID FOR KILLING GRUNTS, ETC. ;SO THE HELPER BLADE WILL NOT SCORE PTS FOR THE PLAYER CLR A0 MOVE A0,*A13(HITS) MOVI ADLTA,A0 MOVE A0,*A13(DELTA),L CALLA SETPOINT ; ENCIRCLE: ; MAKE LASER MOVE IN A CIRCLE AROUND PLAYER CALLR ALIGNXY ;KEEP OBJECT ALIGNED WITH PLAYER MOVE *A13(THETA),A2,L ;PROGRESSIVE THETA MOVE *A13(DELTA),A0,L ;NEXT DELTA ANGLE ADD A2,A0 CALLA GETCOS MOVE A0,A11 MOVK 3,A0 MPYS A0,A11 MOVE A14,*A13(THETA),L MOVE A14,A0 CALLA GETSIN MOVE A0,A3 MOVK 3,A0 MPYS A0,A3 MOVE A3,A10 MOVE *A8(OXVAL),A3,L MOVE *A8(OYVAL),A4,L ADD A11,A3 ADD A10,A4 MOVE A3,*A8(OXVAL),L MOVE A4,*A8(OYVAL),L SLOOP 1,ENCIRCLE LASERDIE: MOVE A11,*A8(OXVEL),L MOVE A10,*A8(OYVEL),L FLYER: CALLA SCRTST JRNZ LSER SLOOP 30,FLYER LSER: MOVE A8,A0 CALLA DELOBJ ;KILL IMAGE DIE ALIGNXY: ; KEEP LASER WITHIN X CENTERPOINT OF PLAYER ; PARMS: ; ; A8 = PTR TO PLINDX ; MOVE *A13(PTRX),A4,W ;OLD X,Y VALUES MOVE *A13(PTRY),A5,W MOVE A8,A10 MOVE *A13(LEG),A8,L CALLA GETANIXY ;Y/X POSITION RETURNED IN A2,A3 MOVE A10,A8 SWAP A2,A3 SRL 16,A2 SRL 16,A3 MOVE A4,A4 JRZ PK DIFF: CMP A4,A2 JREQ DOY JRGT ADDX ;NEW X POS > OLD X POS SUBX: SUB A2,A4 MOVE *A8(OXPOS),A6 SUB A4,A6 MOVE A6,*A8(OXPOS) JRUC DOY ADDX: SUB A2,A4 NEG A4 MOVE *A8(OXPOS),A6 ADD A4,A6 MOVE A6,*A8(OXPOS) DOY: CMP A5,A3 JREQ PK ;NO DIFFERENCES IN X,Y BYE! JRGT ADDY ;NEW Y POS > OLD Y POS SUBY: SUB A3,A5 MOVE *A8(OYPOS),A6 SUB A5,A6 MOVE A6,*A8(OYPOS) JRUC PK ADDY: SUB A3,A5 NEG A5 MOVE *A8(OYPOS),A6 ADD A5,A6 MOVE A6,*A8(OYPOS) PK: MOVE A2,*A13(PTRX),W MOVE A3,*A13(PTRY),W RETS SETPOINT: MOVI INITAB,A14 CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE CALLA STFOBJ ;STUFF OBJECT DATA MOVE A13,*A0(OPLINK),L CALLA ADJSTWTL ;PUT US IN THE WORLD CALLA INSOBJ ;INSERT OBJECT INTO LIST MOVE A0,A10 ;A9=CORRECT LEG PTR MOVE A9,*A13(LEG),L ;A7=A7 ALREADY? MOVE *A9(OPLINK),A7,L ;LEGS HAVE SAME OPLINK AS TORSO! ;A7 NOW EQUALS TORSO PROC OF PLAYER WHO PICKED UP HELPER ICON MOVE A0,*A7(LSRPTR),L ;THIS OKAY? MOVE A9,A8 CALLA GETANIXY ;Y/X POSITION RETURNED IN A2,A3 MOVE A10,A8 ADDI [3,0],A2 MOVE A2,*A8(OYVAL),L SUBI [10,0],A3 MOVE A3,*A8(OXVAL),L CLR A0 MOVE A0,*A13(PTRX),W ;OLD X,Y VALUES MOVE A0,*A13(PTRY),W MOVE A0,*A13(THETA),L RETS LSDMG: MMTM SP,A1,A13 MOVE *A8(OPLINK),A13,L ;GET PROCESS ID BACK MOVE *A13(HITS),A1 INC A1 MOVE A1,*A13(HITS) CMPI MAXHITS,A1 JRNZ HO ;BLADE TO FLY OFF ;RESET HERE CALLR LSHIT HO MMFM SP,A1,A13 RETS LSHIT: ;CALLED FROM COLLISION ROUTINE ;ALSO CALLED FROM ROBO WHEN PLAYER DIES ;A8=HELPER IMG PNTR MMTM SP,A0,A7,A13 ;PUSHING ENOUGH STUFF HERE? MOVE *A8(OPLINK),A13,L ;GET PROCESS ID BACK ;HELPER TO FLY OFF ;RESET HERE MOVE *A13(LEG),A0,L ;GET LEG I SURROUND MOVE *A0(OPLINK),A0,L ;GET PLAYER PROC CLR A7 MOVE A7,*A0(LSRPTR),L ;ZERO PLAYER PROC LASER PNTR MOVE A13,A0 MOVI LASERDIE,A7 CALLA PUTA7 ;THIS HLPR WILL NOW WAKE UP AT A7 ADDR MMFM SP,A0,A7,A13 RETS INITAB: .LONG 0,0,BLADE .WORD 158,DMAWNZ,CLSPLYR|TYPHLPR .LONG 0,0 .END