total-carnage/BACKUP/HELPER.ASM

3926 lines
79 KiB
NASM
Raw Blame History

This file contains invisible Unicode characters!

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

**************************************************************
*
* Software: Mark Turmell
* Initiated: Dec 18,1990
*
* Modified:
*
* COPYRIGHT (C) 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