4879 lines
90 KiB
NASM
4879 lines
90 KiB
NASM
;WHAT IF CRUISE MISSILIES ARE COMING DURING SECRET PATH ENTER?
|
||
**************************************************************
|
||
*
|
||
* Software: Mark Turmell
|
||
* Initiated: 9/1/90
|
||
*
|
||
* Modified: !
|
||
*
|
||
* COPYRIGHT (C) 1991 WILLIAMS ELECTRONICS GAMES, INC.
|
||
*
|
||
*.Last mod - 12/13/91 20:05
|
||
**************************************************************
|
||
.TITLE 'MINE.ASM'
|
||
.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\gsp.inc"
|
||
.INCLUDE "\VIDEO\SYS\MACROS.HDR" ;MACROS DEFINITIONS
|
||
.INCLUDE "IMGTBL.GLO"
|
||
.INCLUDE "BGNDTBL.GLO" ;BACKGROUND EQUATES
|
||
.INCLUDE "GAME.EQU"
|
||
.include "audit.equ"
|
||
|
||
;SOUNDS
|
||
|
||
.REF ALTEXP3,THNKU,WOO2,EXP2,EXP2HI,SETDWN,ALTEXP5,SALTXP4
|
||
.REF CRSSND,TRGTSND,SCASH3,SQUISH,MTING
|
||
.REF WRPSND,ONESNDOVR
|
||
;SYMBOLS EXTERNALLY DEFINED
|
||
|
||
.REF HSTGS_LOST,HSTGSET,RNDRNG0,LHLPS,BLAKOUT,RESTUFF_AUTOERASE
|
||
.REF BONE,HZSPD,WNDWON,RUNIN,SHLD1,SHLD2,GAMSTATE,RINGS
|
||
.REF DOSWAP,JFLAMES,DO_NEUTS,timerp1,timerp2
|
||
.REF CYCLE_TABLE,FRANIM,FRANIMQ
|
||
.ref PLYROBJS,P1DATA,P2DATA,RANGRAND,CIRCL_FLG
|
||
.REF RANDPER,TARGET_NUM,ONARRW,TARGET,ARWOFF,OBJON,OBJOFF,OUT_FLG
|
||
.REF XYSEEK2,SCRADD2,IP,DO_ALL_STUFF,FLASHME,CHUNK_OBJ,EN_CURRENT
|
||
.REF SCRTST,HULK_DN,SENDH_GROUP,FIEND,GETADIR2,XYSKOBJ,DOLORD
|
||
.REF GET_VALID_XY,STATUS,WAVE,CHK_BULL,BOOM3,PCNT
|
||
.REF SBOMB,SQUARES,SQR_FLG,KILBGND,BGND_UD1,CRT_AHMD,PCTOT,XOUT0
|
||
.REF SCORE_FLAG,IRQSKYE,BAKMODS,OFFSCRN,CLNPAL,AFTR_WRP
|
||
.REF FB_FADEOUT,FADEOUT,FB_FADEIN,SETC2,FADEIN,ZONE_TXT2,COLCYC
|
||
.REF BCURRENT,RECT1,ENEMY_RECT,CURRENT,JOY_UPDATE,P1CTRL,P2CTRL
|
||
.REF BRECT1,ENRECT1,ERECT1,STRT_G,PLYRPRCS,SCRIPTPLAY
|
||
.REF ICN3,ICLIST,SEND_ICON,SHOTKILL,CKFORY,ENRECT5,ERECT5,ICONS_DN
|
||
.REF SEND_GROUP,JUMPER,RANDOM,T72PNTR,GETCPNT,PCINFO,ICN1
|
||
.REF HALT,LASTPC,BOOMS
|
||
.ref aud_addnumplyrs
|
||
|
||
;SYMBOLS DEFINED IN THIS FILE
|
||
|
||
.DEF BLSTS2A,INEXP
|
||
.DEF AIRRECT2A,AIRBRECT2
|
||
.DEF HSTGLST,HSTGLST2,DELZ10,SHIFTLM
|
||
.DEF ANI_HSTG,TNTIT
|
||
.DEF EXPMINE,TBOMB,KILL_GATE,DROPBMB,TAKEEL,INHERE,CRATEMAN,FRAIT
|
||
.DEF SHAKER,BMLM2,GOT_HSTG,KILL_CRT,BLOW_RCTR,KEEPIT,KILL_CRT2
|
||
.DEF O_MINE,SPATH,XBOOM2,TBOMBD,CRSRAM,EXPMINE2,FIREEXP,BSTART
|
||
.DEF SRECT1,BSRECT1,CTOTAL,BLSTS2,PIT2,BLUEEXP,XBOOMS,COLTAB
|
||
.DEF FADE_STRT,CK_GOOB,SHK_ON,BRLO,KILL_CRT3,CYCLEON,ELECT_MINE
|
||
.DEF TBOMBD2,SLM,DO_GOOJ,CYCLIFE
|
||
.DEF DOSHIFT2,DOSHIFT,JDOSHIFT,ATME
|
||
|
||
; .IF DEBUG
|
||
.DEF DOATP,DO5
|
||
; .ENDIF
|
||
|
||
;UNINITIALIZED RAM DEFINITIONS
|
||
|
||
.BSS INEXP,16
|
||
.BSS RAMLST,32*6 ;LIST OF OBJECTS TO DELETE NEAR GATES
|
||
.BSS RAMXY,32*21
|
||
.BSS PALTMP,16*16*2 ;ALLOCATE 2 X COLOR AREA IN RAM
|
||
.BSS CRSRAM,32
|
||
.BSS CTOTAL,16
|
||
.BSS TARG1,32
|
||
.BSS TARG2,32
|
||
.BSS KEEPT,32
|
||
.BSS SCNTR,16
|
||
.BSS KEEPIT,32
|
||
; .BSS BOLTL,64
|
||
; .BSS BOLTR,64
|
||
; .BSS BOLTBT,64
|
||
.BSS AMP,16
|
||
.BSS AMPCNT,16
|
||
.BSS XSET,16
|
||
.BSS YSET,16
|
||
.BSS SHK_ON,16
|
||
.BSS KEEPXY,32
|
||
.BSS TMP,16
|
||
.BSS CYCLIFE,16
|
||
|
||
;EQUATES FIRST ORIGINATED IN THIS FILE
|
||
|
||
MISLPUN .EQU 12
|
||
|
||
|
||
;TANK/SHRAPNEL BULLET DATA STRUCTURE
|
||
|
||
BNCS .EQU PDATA ;UHW
|
||
LAST .EQU PDATA+16 ;UHW
|
||
FDLY .EQU PDATA+32 ;UHW FRANIM DELAY
|
||
;MYPLYR .EQU PDATA+48
|
||
MYLIST .EQU PDATA+64 ;UHL FRANIM LIST FOR THIS PC UPON DEATH
|
||
;SAME AS IN ARAB.ASM
|
||
MYSND .EQU PDATA+96 ;UHL SOUND HEADER FOR GOO TYP DEATH
|
||
;SAM AS IN ARAB.ASM
|
||
BLAGE .EQU PDATA+128 ;UHW AGE OF BULLET
|
||
FXOR .EQU PDATA+144 ;UHW
|
||
|
||
SLPTIME .EQU PDATA ;UHW
|
||
;
|
||
;CRATE PDATA AREA
|
||
;
|
||
HITS .EQU PDATA ;UHW CRATE HITS
|
||
SHKIN .EQU PDATA+16 ;SHAKE FLAG
|
||
;
|
||
;TBOMB PDATA AREA
|
||
KEEPY .EQU PDATA ;UHW Y LINE OF WHAT CRUISE WILL KILL
|
||
SHKFLG .EQU PDATA+16 ;UHW IF 0 WHEN TBOMB EXPLODES - SHAKE SCRN
|
||
|
||
.TEXT
|
||
|
||
ATME
|
||
;MINES COME AT ME
|
||
MOVE @WORLDTLX+16,A0
|
||
CMPI 580H,A0
|
||
JANC SUCIDE
|
||
CALLR ATMENOW
|
||
SLEEP 60
|
||
CALLR DOSHIFT2
|
||
JRUC ATME
|
||
ATMENOW
|
||
MOVI OBJLST,A2,L
|
||
TOBP:
|
||
MOVE *A2,A2,L ;GET NEXT
|
||
JREQ TOBX ;ALL DONE
|
||
MOVE *A2(OID),A3
|
||
CMPI CLSNEUT|TYPMINE,A3
|
||
JRNE TOBP ;NO
|
||
;GIVE THIS LAND MINE A VELOCITY
|
||
; MOVE @HCOUNT,A0
|
||
; BTST 0,A0
|
||
; JRZ TOBP
|
||
MOVE @SCNTR,A3
|
||
INC A3
|
||
MOVE A3,@SCNTR
|
||
ANDI 01,A3
|
||
SLL 5,A3
|
||
MOVI PLYROBJS,A4
|
||
ADD A3,A4
|
||
MOVE *A4,A0,L ;GET FIRST ENTRY
|
||
JRNZ PXC
|
||
XORI 32,A3
|
||
ADDI PLYROBJS,A3
|
||
MOVE *A3,A0,L
|
||
|
||
PXC MOVE A2,A8
|
||
CALLA XYSKOBJ
|
||
;A5=X VEL
|
||
;A6=Y VEL
|
||
MOVE A6,*A2(OYVEL),L
|
||
MOVE A5,*A2(OXVEL),L
|
||
JRUC TOBP
|
||
TOBX:
|
||
RETS
|
||
|
||
;LXV .LONG -0A000H,0A000H,0,0,0
|
||
;LYV .LONG 0,0,-08000H,08000H,-08000H
|
||
;LXV2 .LONG 0A000H,0A000H,0,0A000H ;ON LEFT
|
||
;LYV2 .LONG 0,0,-08000H,08000H,0
|
||
;LXV3 .LONG -0A000H,-0A000H,0,0,-0A000H ;ON RGT
|
||
;LYV3 .LONG 0,0,-08000H,08000H,0
|
||
|
||
SHIFTLM
|
||
;SHIFT LAND MINES
|
||
SLEEP 7*60
|
||
MOVE @WORLDTLX,A9,L
|
||
ADDI [60,0],A9
|
||
MOVE A9,A10
|
||
ADDI [280,0],A10
|
||
;START THEM MOVING
|
||
CALLR DOSHIFT
|
||
SLEEP 60
|
||
;NOW STOP THEM
|
||
CALLR DOSHIFT2
|
||
SLEEP 60 ;120
|
||
CALLR DOSHIFT
|
||
SLEEP 60
|
||
;NOW STOP THEM
|
||
CALLR DOSHIFT2
|
||
SLEEP 60
|
||
CALLR DOSHIFT
|
||
SLEEP 60
|
||
;NOW STOP THEM
|
||
CALLR DOSHIFT2
|
||
;OLD DIE
|
||
SLEEP 60
|
||
CALLR DOSHIFT
|
||
SLEEP 60
|
||
;NOW STOP THEM
|
||
CALLR DOSHIFT2
|
||
DIE
|
||
DOSHIFT2
|
||
MOVI OBJLST,A2,L
|
||
OBP:
|
||
MOVE *A2,A2,L ;GET NEXT
|
||
JREQ OBX ;ALL DONE
|
||
MOVE *A2(OID),A3
|
||
CMPI CLSNEUT|TYPMINE,A3
|
||
JRNE OBP ;NO
|
||
;ZERO VELOCITY
|
||
CLR A0
|
||
MOVE A0,*A2(OXVEL),L
|
||
MOVE A0,*A2(OYVEL),L
|
||
JRUC OBP
|
||
OBX
|
||
RETS
|
||
DOSHIFT
|
||
;SHIFT ALL LAND MINES ON SCREEN
|
||
;A9=LEFT EDGE
|
||
;A10=RIGHT EDGE
|
||
MOVI OBJLST,A2,L
|
||
XISTOBP:
|
||
MOVE *A2,A2,L ;GET NEXT
|
||
JREQ XISTOBX ;ALL DONE
|
||
MOVE *A2(OID),A3
|
||
CMPI CLSNEUT|TYPMINE,A3
|
||
JRNE XISTOBP ;NO
|
||
;GIVE THIS LAND MINE A VELOCITY
|
||
; CLR B0
|
||
; MOVK 5,B1
|
||
; CALLA RANGRAND
|
||
; DEC A0
|
||
MOVK 4,A0
|
||
CALLA RNDRNG0
|
||
|
||
SLL 5,A0
|
||
MOVE *A2(OXVAL),A1,L
|
||
CMP A9,A1
|
||
JRLT SET2
|
||
CMP A10,A1
|
||
JRGT SET3
|
||
;IN MIDDLE OF SCREEN, MINE CAN GO 4 DIRECTIONS
|
||
MOVI LXV,A1
|
||
ADD A0,A1
|
||
MOVE *A1,A3,L
|
||
MOVI LYV,A1
|
||
ADD A0,A1
|
||
MOVE *A1,A4,L
|
||
JRUC MOUT
|
||
SET2
|
||
;ON LEFT SIDE OF SCRN
|
||
MOVI LXV2,A1
|
||
ADD A0,A1
|
||
MOVE *A1,A3,L
|
||
MOVI LYV2,A1
|
||
ADD A0,A1
|
||
MOVE *A1,A4,L
|
||
JRUC MOUT
|
||
SET3
|
||
;ON RIGHT SIDE OF SCRN
|
||
MOVI LXV3,A1
|
||
ADD A0,A1
|
||
MOVE *A1,A3,L
|
||
MOVI LYV3,A1
|
||
ADD A0,A1
|
||
MOVE *A1,A4,L
|
||
MOUT MOVE A4,*A2(OYVEL),L
|
||
MOVE A3,*A2(OXVEL),L
|
||
JRUC XISTOBP
|
||
XISTOBX:
|
||
RETS
|
||
|
||
LXV .LONG -0A000H,0A000H,0,0,0
|
||
LYV .LONG 0,0,-08000H,08000H,-08000H
|
||
LXV2 .LONG 0A000H,0A000H,0,0A000H ;ON LEFT
|
||
LYV2 .LONG 0,0,-08000H,08000H,0
|
||
LXV3 .LONG -0A000H,-0A000H,0,0,-0A000H ;ON RGT
|
||
LYV3 .LONG 0,0,-08000H,08000H,0
|
||
|
||
JDOSHIFT
|
||
;SHIFT ALL LAND MINES ON SCREEN
|
||
;A9=LEFT EDGE
|
||
;A10=RIGHT EDGE
|
||
MOVI OBJLST,A2,L
|
||
JEXISTOBP:
|
||
MOVE *A2,A2,L ;GET NEXT
|
||
JREQ JEXISTOBX ;ALL DONE
|
||
MOVE *A2(OID),A3
|
||
CMPI CLSNEUT|TYPMINE,A3
|
||
JRNE JEXISTOBP ;NO
|
||
;GIVE THIS LAND MINE A VELOCITY
|
||
CLR B0
|
||
MOVK 5,B1
|
||
CALLA RANGRAND
|
||
DEC A0
|
||
SLL 5,A0
|
||
MOVE *A2(OXVAL),A1,L
|
||
MOVE @WORLDTLX,A9,L
|
||
SUBI [50,0],A9 ;50
|
||
CMP A9,A1
|
||
JRLT JSET2
|
||
ADDI [500,0],A9
|
||
CMP A9,A1
|
||
JRGT JSET3
|
||
;IN MIDDLE OF SCREEN, MINE CAN GO 4 DIRECTIONS
|
||
MOVI JLXV,A1
|
||
ADD A0,A1
|
||
MOVE *A1,A3,L
|
||
MOVI JLYV,A1
|
||
ADD A0,A1
|
||
MOVE *A1,A4,L
|
||
JRUC JMOUT
|
||
JSET2
|
||
;ON LEFT SIDE OF SCRN
|
||
MOVI JLXV2,A1
|
||
ADD A0,A1
|
||
MOVE *A1,A3,L
|
||
MOVI JLYV2,A1
|
||
ADD A0,A1
|
||
MOVE *A1,A4,L
|
||
JRUC JMOUT
|
||
JSET3
|
||
;ON RIGHT SIDE OF SCRN
|
||
MOVI JLXV3,A1
|
||
ADD A0,A1
|
||
MOVE *A1,A3,L
|
||
MOVI JLYV3,A1
|
||
ADD A0,A1
|
||
MOVE *A1,A4,L
|
||
JMOUT MOVE A4,*A2(OYVEL),L
|
||
MOVE A3,*A2(OXVEL),L
|
||
JRUC JEXISTOBP
|
||
JEXISTOBX:
|
||
RETS
|
||
|
||
JLXV .LONG -0E000H,0E000H,0,0,0
|
||
JLYV .LONG 0,0,-0B000H,0B000H,-0B000H
|
||
JLXV2 .LONG 0E000H,0E000H,0,0E000H ;ON LEFT
|
||
JLYV2 .LONG 0,0,-0B000H,0B000H,0
|
||
JLXV3 .LONG -0E000H,-0E000H,0,0,-0E000H ;ON RGT
|
||
JLYV3 .LONG 0,0,-0C000H,0C000H,0
|
||
|
||
|
||
|
||
ELECT_MINE
|
||
MOVE A13,*A8(OPLINK),L
|
||
SLEEP 180
|
||
EM2 MOVK 30,B0
|
||
MOVI 100,B1
|
||
CALLA RANGRAND
|
||
CALLA PRCSLP
|
||
MOVI ELIST,A9
|
||
JSRP FRANIMQ
|
||
CALLA SCRTST
|
||
;*RETURNS EQ IF ON SCREEN
|
||
JREQ EM2
|
||
jauc DELOBJDIE
|
||
|
||
ELIST
|
||
.LONG ELECT1A
|
||
.WORD 4
|
||
.LONG ELECT1B
|
||
.WORD 4
|
||
.LONG ELECT1C
|
||
.WORD 4
|
||
.LONG ELECT1A
|
||
.WORD 4
|
||
.LONG ELECT1B
|
||
.WORD 4
|
||
.LONG ELECT1C
|
||
.WORD 4
|
||
.LONG ELECT1A
|
||
.WORD 4
|
||
.LONG ELECT1B
|
||
.WORD 4
|
||
.LONG ELECT1C
|
||
.WORD 4
|
||
.LONG ELECT1A
|
||
.WORD 4
|
||
.LONG ELECT1B
|
||
.WORD 4
|
||
.LONG ELECT1C
|
||
.WORD 4
|
||
.LONG ELECT1A
|
||
.WORD 4
|
||
.LONG ELECT1B
|
||
.WORD 4
|
||
.LONG ELECT1C
|
||
.WORD 4
|
||
.LONG ELECT1
|
||
.WORD 20
|
||
.LONG 0
|
||
O_MINE:
|
||
;CLEAR RAM AREA FOR TEMP X/Y POSITIONS
|
||
MOVI RAMXY,A0
|
||
CLR A3
|
||
MOVK 20,A1
|
||
LP9: MOVE A3,*A0+,L
|
||
DSJS A1,LP9
|
||
|
||
MOVI [60,60],A0 ;SOME VALUE TO INIT TABLE WITH
|
||
;NOTHING WILL ORIGINATE AT 20/20
|
||
MOVI RAMXY,A1
|
||
MOVE A0,*A1+,L
|
||
MOVE A1,@KEEPXY,L
|
||
;A2=# OF MINES TO CREATE ON SCREEN
|
||
MOVE @STATUS,A0
|
||
CMPI 3,A0
|
||
JRZ OH1
|
||
CMPI 7,A2 ;EASIER FOR PLAYER 1
|
||
JRC OH1
|
||
SUBK 3,A2
|
||
OH1 ;CREATE A BUNCH OF THEM
|
||
CREATE0 AMINE
|
||
DSJS A2,OH1
|
||
RETS
|
||
AMINE:
|
||
;AMINE IS CALLED TO PLACE X # OF MINES ON SCREEN
|
||
CALLR GET_VAL ;MAKE SURE NEW BUST IS NOT
|
||
;OVERLAPPING ANY EXISTING SHAPE
|
||
;WHICH IS ALREADY ON SCRN AT START
|
||
;A0 & A1 ARE SET UP
|
||
MOVI M1,A2 ;DOES NOT MATTER
|
||
MOVI 69,A3
|
||
MOVI DMAWNZ,A4 ;NON-ZERO VALUE
|
||
MOVI CLSNEUT|TYPMINE,A5
|
||
CLR A6
|
||
CLR A7
|
||
CALLA BEGINOBJ2
|
||
CLR A0
|
||
MOVE A0,*A8(OPLINK),L
|
||
DIE
|
||
|
||
GET_VAL:
|
||
MOVK 020,A9 ;LAND MINE 20 WIDE
|
||
CALLA GET_VALID_XY
|
||
;RETURNS A10=YPOS,A11=XPOS
|
||
JRNC GOOD
|
||
JRUC GET_VAL
|
||
GOOD
|
||
; MOVE A10,*A8(OYPOS),W
|
||
; MOVE A11,*A8(OXPOS),W
|
||
SLL 16,A11
|
||
MOVE A11,A0
|
||
SLL 16,A10
|
||
MOVE A10,A1
|
||
|
||
;A0=X,A1=Y
|
||
MOVE A0,A2
|
||
MOVY A1,A3
|
||
SRL 16,A2
|
||
MOVX A2,A3
|
||
;
|
||
;CHECK FOR OTHER SHAPES NOW
|
||
;
|
||
;A3=[Y,X]
|
||
MOVI RAMXY,A2
|
||
TCK: MOVE *A2+,A4,L
|
||
JRZ OEXIT
|
||
;AN EXISTING SHAPE MUST BE CHECKED
|
||
MOVX A4,A5 ;A4 = Y VAL (32 BIT)
|
||
SLL 16,A5 ;A5 = X VAL
|
||
ADDI 01C0000H,A4 ;ADD IN HEIGHT OF OBJ
|
||
CMP A4,A1
|
||
JRGT VALID ;BR IF A1>A4
|
||
SUBI 0380000H,A4
|
||
CMP A4,A1
|
||
JRLT VALID ;BR IF A1<A4
|
||
|
||
;NEW Y VAL IS IN ANOTHER SHAPES Y BAND
|
||
;NOW CHECK X
|
||
|
||
ADDI 02A0000H,A5 ;1A
|
||
CMP A5,A0
|
||
JRGT VALID ;BR IF A5>A0
|
||
SUBI 0340000H,A5
|
||
CMP A5,A0
|
||
JRLT VALID
|
||
;SOME SHAPE IS ALREADY THERE!
|
||
JRUC GET_VAL
|
||
;HIT
|
||
VALID:
|
||
JRUC TCK
|
||
|
||
OEXIT:
|
||
;A3=[Y,X]
|
||
MOVE @KEEPXY,A4,L
|
||
MOVE A3,*A4+,L
|
||
MOVE A4,@KEEPXY,L
|
||
RETS
|
||
BLOW_RCTR
|
||
MOVK 18,A0
|
||
MOVE A0,@CTOTAL
|
||
MOVK 3,A0
|
||
MOVE A0,@WAVE
|
||
MOVI LORDPID,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA KILALL
|
||
;TURN ON RIGHT HAND GOOB POOL
|
||
MOVI GOOB,A14
|
||
CALLA DO_ALL_STUFF
|
||
MOVE A0,@KEEPIT,L
|
||
SLEEPK 30
|
||
;SEND GROUP OF HULKS DOWN AT PLAYER FROM SIDE
|
||
MOVK 10,A8
|
||
BEND1
|
||
SLEEP >40
|
||
MOVI [115,380],A9
|
||
MOVK 7,A10 ;GO LEFT
|
||
CLR A0
|
||
MOVE A0,@JUMPER
|
||
PUSH A8
|
||
CALLA SEND_GROUP
|
||
PULL A8
|
||
DSJ A8,BEND1
|
||
DIE
|
||
BLOWJET
|
||
SLEEP 084H
|
||
;A8=TOP OF DISH
|
||
MOVK 17H,A10
|
||
MOVK 2,A9 ;A9=2 FOR JET
|
||
CREATE BLOWPID,DOBIGS
|
||
CREATE BLOWPID,ONME2
|
||
MOVK 7,A10
|
||
CREATE BLOWPID,DOGREY
|
||
SLEEPK 32
|
||
CREATE BLOWPID,JFLAMES
|
||
DIE
|
||
|
||
BLOWDSH SLEEP 084H
|
||
;A8=TOP OF DISH
|
||
MOVK 07H,A10
|
||
MOVK 1,A9 ;A9=1 FOR DISH
|
||
CREATE BLOWPID,DOBIGS
|
||
MOVK 5,A10
|
||
CREATE BLOWPID,DOMTL
|
||
CREATE BLOWPID,ONME
|
||
|
||
SLEEP 048H
|
||
MOVE *A8(OYPOS),A0
|
||
ADDI 63,A0
|
||
MOVE A0,A9 ;TARGET Y
|
||
MOVI OBJLST,A6,L
|
||
VILOBP:
|
||
MOVE *A6,A6,L ;GET NEXT
|
||
JREQ VILXL ;ALL DONE
|
||
MOVE *A6(OYPOS),A4
|
||
SUB A9,A4
|
||
ABS A4
|
||
SUBK 2,A4
|
||
JRHI VILOBP
|
||
; CMP A9,A4 ;MATCH?
|
||
; JRNZ VILOBP ;NO
|
||
;FOUND IMG WITH CORRECT Y VALUE
|
||
MOVE *A6(OSIZEX),A0
|
||
CMPI 28,A0 ;SIDE OF DISH
|
||
JRNZ VILOBP
|
||
;CHECK FOR REAL SIDE PC HERE
|
||
MOVE *A6(OZPOS),A0
|
||
CMPI 281,A0
|
||
JRNZ VILOBP
|
||
MOVE A6,A0
|
||
CALLA DELOBJ
|
||
VILX
|
||
CALLA DELOBJA8
|
||
;NOW SORT THRU BAKLST LOOKING FOR THE BASE
|
||
MOVI BAKLST,A6,L
|
||
ILOBP:
|
||
MOVE *A6,A6,L ;GET NEXT
|
||
JREQ ILX ;ALL DONE
|
||
MOVE *A6(OYPOS),A4
|
||
SUB A9,A4
|
||
ABS A4
|
||
SUBK 2,A4
|
||
JRHI ILOBP
|
||
; CMP A9,A4 ;MATCH?
|
||
; JRNZ ILOBP ;NO
|
||
;FOUND IMG WITH CORRECT Y VALUE
|
||
MOVE *A6(OSIZEX),A0
|
||
CMPI 92,A0 ;BASE OF DISH
|
||
JRNZ ILOBP
|
||
MOVE A6,A8
|
||
MOVE *A8(OYPOS),A0
|
||
SUBK 16H-11,A0
|
||
MOVE A0,*A8(OYPOS)
|
||
MOVI DPC4,A1
|
||
MOVE *A8(OFLAGS),A4
|
||
CALLA ANI
|
||
ILX
|
||
DIE
|
||
VILXL
|
||
; .IF DEBUG
|
||
; LOCKUP
|
||
; EINT
|
||
; .ENDIF
|
||
DIE
|
||
BLOWALL
|
||
;A8=REACTOR IMAGE
|
||
;WARNING SOUND
|
||
;SHAKE IT
|
||
;OVERLAY BIG EXPLOSION SEVERAL TIMES
|
||
;SEND OUT TONS OF REACTOR PIECES
|
||
;CHANGE TO DESTROYED REACTOR PIECE
|
||
;TURN ON GOOB POOL INSIDE
|
||
;SEND OUT METAL CHUNKS
|
||
;SHAKE ENTIRE SCREEN
|
||
;
|
||
;WAIT HERE UNTIL END OF WAVE REACHED!
|
||
;
|
||
SLEEP 190
|
||
CREATE BLOWPID,SHKRC
|
||
SLEEP 180
|
||
CREATE BLOWPID,BAMS
|
||
MOVK 23,A10
|
||
CLR A9 ;A9=0 FOR REACTOR
|
||
CREATE BLOWPID,DOBIGS
|
||
MOVK 10,A10
|
||
CREATE BLOWPID,DOMTL
|
||
CLR A9
|
||
MOVK 10,A10
|
||
CREATE BLOWPID,DOSIDES
|
||
|
||
SLEEP 120
|
||
|
||
MOVI RCTR2,A1
|
||
MOVE *A8(OFLAGS),A4
|
||
CALLA ANI
|
||
MOVE *A8(OFLAGS),A1
|
||
BTST B_FLIPH,A1
|
||
JRZ NOF
|
||
MOVI BPL2,A14
|
||
CALLA DO_ALL_STUFF
|
||
MOVE *A8(OXPOS),A1
|
||
ADDK 9,A1
|
||
MOVE A1,*A0(OXPOS)
|
||
JRUC BFO
|
||
NOF
|
||
MOVI BPL,A14
|
||
CALLA DO_ALL_STUFF
|
||
MOVE *A8(OXPOS),A1
|
||
ADDI 22H,A1
|
||
MOVE A1,*A0(OXPOS)
|
||
BFO MOVE *A8(OYPOS),A1
|
||
ADDI 03DH,A1
|
||
MOVE A1,*A0(OYPOS)
|
||
MOVK 15H,A10 ;29
|
||
CALLR SHAKER
|
||
DIE
|
||
ONME
|
||
;TURN ON BIG EXPLOSION
|
||
MOVE *A8(OXPOS),A9
|
||
MOVE *A8(OYPOS),A10
|
||
ADDI 51H,A10
|
||
MOVK 5,A11
|
||
FTP MOVI BEXP,A14
|
||
CALLA DO_ALL_STUFF
|
||
MOVE A0,A8
|
||
MOVE A9,*A8(OXPOS)
|
||
MOVE A10,*A8(OYPOS)
|
||
;DISH
|
||
;TURN ON BIG EXPLOSION OVER DISH
|
||
CREATE BLOWPID,FRAIT2
|
||
SLEEPK 18H
|
||
DSJ A11,FTP
|
||
DIE
|
||
ONME2
|
||
;TURN ON BIG EXPLOSION
|
||
MOVE *A8(OXPOS),A9
|
||
MOVE *A8(OYPOS),A10
|
||
ADDI 11H,A10
|
||
ADDI 41H,A9
|
||
MOVK 3,A11
|
||
FTP2 MOVI BEXP,A14
|
||
CALLA DO_ALL_STUFF
|
||
MOVE A0,A8
|
||
MOVE A9,*A8(OXPOS)
|
||
MOVE A10,*A8(OYPOS)
|
||
;JET
|
||
;TURN ON BIG EXPLOSION OVER JET
|
||
SLEEPK 15H
|
||
CREATE BLOWPID,FRAIT
|
||
DSJ A11,FTP2
|
||
DIE
|
||
DOGREY MOVE A8,A11
|
||
MOVK 2,A9
|
||
DOG1 MOVI BEXPD2,A14
|
||
CALLA DO_ALL_STUFF
|
||
MOVE A0,A8
|
||
MOVI -10000H,B0
|
||
MOVI 10000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,*A8(OXVEL),L
|
||
MOVE *A11(OXPOS),A0
|
||
MOVE A10,A1
|
||
SLL 4,A1
|
||
ADDI XXOVER,A1
|
||
MOVE *A1,A1,W
|
||
ADD A1,A0
|
||
MOVE A0,*A8(OXPOS)
|
||
MOVI 40,A0
|
||
CALLA RNDRNG0
|
||
SUBK 20,A0
|
||
ADDI 22H,A0
|
||
MOVE *A11(OYPOS),A1
|
||
ADD A1,A0
|
||
MOVE A0,*A8(OYPOS)
|
||
CREATE BLOWPID,FRAIT
|
||
MOVK 6,A0
|
||
CALLA RNDRNG0
|
||
INC A0
|
||
CALLA PRCSLP
|
||
DSJ A10,DOG1
|
||
MOVK 7,A10
|
||
SLEEP 50
|
||
DSJ A9,DOG1
|
||
DIE
|
||
XXOVER .WORD 25,40,70,100,130,160,180,190
|
||
|
||
|
||
DOBIGS
|
||
;TURN ON BIG EXPLOSION
|
||
MOVE A8,A11
|
||
TP MOVE A9,A9
|
||
JRZ TPK
|
||
CMPI 1,A9
|
||
JRZ DSH
|
||
;JET
|
||
MOVI BEXPD2,A14
|
||
CALLA DO_ALL_STUFF
|
||
MOVE A0,A8
|
||
MOVE *A11(OXPOS),A0
|
||
ADDI 40H,A0
|
||
MOVE A0,*A8(OXPOS)
|
||
MOVE *A11(OYPOS),A0
|
||
ADDI 012H,A0 ;4B
|
||
MOVE A0,*A8(OYPOS)
|
||
MOVI -40,B0
|
||
MOVI 40,B1
|
||
CALLA RANGRAND
|
||
MOVE *A8(OXPOS),A2
|
||
ADD A0,A2
|
||
MOVE A2,*A8(OXPOS)
|
||
MOVI -15,B0
|
||
MOVK 15,B1
|
||
CALLA RANGRAND
|
||
MOVE *A8(OYPOS),A2
|
||
ADD A0,A2
|
||
JRUC TPKKZ
|
||
DSH
|
||
;DISH
|
||
;TURN ON BIG EXPLOSION OVER DISH
|
||
MOVI BEXPD,A14
|
||
CALLA DO_ALL_STUFF
|
||
MOVE A0,A8
|
||
MOVE *A11(OXPOS),A0
|
||
ADDK 06H,A0 ;36
|
||
MOVE A0,*A8(OXPOS)
|
||
MOVE *A11(OYPOS),A0
|
||
ADDI 022H,A0 ;4B
|
||
JRUC TPKK
|
||
TPK
|
||
MOVI BEXP,A14
|
||
CALLA DO_ALL_STUFF
|
||
MOVE A0,A8
|
||
MOVE *A11(OXPOS),A0
|
||
ADDI 026H,A0 ;36
|
||
MOVE A0,*A8(OXPOS)
|
||
MOVE *A11(OYPOS),A0
|
||
ADDI 042H,A0 ;4B
|
||
TPKK MOVE A0,*A8(OYPOS)
|
||
MOVI -20,B0
|
||
MOVK 20,B1
|
||
CALLA RANGRAND
|
||
MOVE *A8(OXPOS),A2
|
||
ADD A0,A2
|
||
MOVE A2,*A8(OXPOS)
|
||
MOVI -25,B0
|
||
MOVK 25,B1
|
||
CALLA RANGRAND
|
||
MOVE *A8(OYPOS),A2
|
||
ADD A0,A2
|
||
TPKKZ MOVE A2,*A8(OYPOS)
|
||
CREATE BLOWPID,FRAIT
|
||
MMTM SP,A9,A10
|
||
MOVK 1,A5
|
||
CMPI 2,A9
|
||
JRZ TPG
|
||
CLR A9
|
||
MOVK 2,A5
|
||
TPG CALLR PIT2
|
||
MMFM SP,A9,A10
|
||
SLEEPK 6
|
||
DSJ A10,TP
|
||
DIE
|
||
|
||
FRAIT
|
||
MOVI XBOOM,A9
|
||
jauc FRQDELDIE
|
||
FRAIT2
|
||
MOVI XBOOMS,A9
|
||
jauc FRQDELDIE
|
||
|
||
DOMTL
|
||
SLEEPK 30
|
||
DM1 PUSH A10
|
||
MOVI BLSTS2,A11
|
||
MOVI 010000H,A9 ;A9=XVEL
|
||
MOVI 08000H,A10 ;A10=YVEL
|
||
MOVE *A8(OFLAGS),A0
|
||
BTST B_FLIPH,A0
|
||
JRZ NOH
|
||
MOVI -010000H,A9 ;A9=XVEL
|
||
MOVI -08000H,A10 ;A10=YVEL
|
||
NOH MOVE @PCTOT,A0
|
||
CMPI 20,A0
|
||
JRNC DEI
|
||
CREATE0 CHUNK_OBJ
|
||
CLR A1
|
||
MOVE A1,*A0(PDATA),W ;NO PAL CHANGE
|
||
PULL A10
|
||
SLEEPK 10
|
||
DSJ A10,DM1
|
||
DIE
|
||
DEI PULL A10
|
||
DIE
|
||
DOSIDES
|
||
SLEEP 68H
|
||
;DOSID2 SLEEPK 20H
|
||
MOVE A8,A11
|
||
CM1
|
||
CREATE BLOWPID,SIDE1
|
||
CREATE BLOWPID,SIDE2
|
||
CREATE BLOWPID,SIDE3
|
||
SLEEPK 2
|
||
DSJ A10,CM1
|
||
DIE
|
||
; .LONG [40H,0],[65H,0],RCTRPC2
|
||
ADJU MOVE A9,A9
|
||
JRZ REU
|
||
MOVE *A11(OXPOS),A0
|
||
ADDK 08H,A0
|
||
MOVE A0,*A8(OXPOS)
|
||
MOVE *A11(OYPOS),A0
|
||
ADDK 0BH,A0
|
||
MOVE A0,*A8(OYPOS)
|
||
RETS
|
||
REU MOVE *A11(OXPOS),A0
|
||
ADDI 038H,A0
|
||
MOVE A0,*A8(OXPOS)
|
||
MOVE *A11(OYPOS),A0
|
||
ADDI 02BH,A0
|
||
MOVE A0,*A8(OYPOS)
|
||
RETS
|
||
SIDE1
|
||
MOVI SD1,A14
|
||
MOVE A9,A9
|
||
JRZ SXC
|
||
MOVI SD1S,A14
|
||
SXC CALLA DO_ALL_STUFF
|
||
MOVE A0,A8
|
||
CALLR ADJU
|
||
MOVI -1000H,B0
|
||
MOVI 0A000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,*A8(OYVEL),L
|
||
MOVI 30000H,B0
|
||
MOVI 70000H,B1
|
||
MOVE *A11(OFLAGS),A0
|
||
BTST B_FLIPH,A0
|
||
JRZ NOH2
|
||
MOVI -70000H,B0
|
||
MOVI -30000H,B1
|
||
NOH2
|
||
|
||
SIDEO
|
||
CALLA RANGRAND
|
||
MOVE A0,*A8(OXVEL),L
|
||
SLEEPK 01FH
|
||
jauc DELOBJDIE
|
||
|
||
SIDE2 MOVE A9,A9
|
||
JRZ SDXX
|
||
MOVI SD1S,A14
|
||
JRUC SDE
|
||
SDXX MOVI SD1,A14
|
||
MOVE @PCNT,A0
|
||
BTST 0,A0
|
||
JRZ SDE
|
||
MOVI SD2,A14
|
||
SDE CALLA DO_ALL_STUFF
|
||
MOVE A0,A8
|
||
CALLR ADJU
|
||
MOVI 8000H,B0
|
||
MOVI 40000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,*A8(OYVEL),L
|
||
MOVI 8000H,B0
|
||
MOVI 40000H,B1
|
||
MOVE *A11(OFLAGS),A0
|
||
BTST B_FLIPH,A0
|
||
JRZ NOH3
|
||
MOVI -40000H,B0
|
||
MOVI -8000H,B1
|
||
NOH3
|
||
JRUC SIDEO
|
||
|
||
SIDE3 MOVI SD3,A14
|
||
MOVE A9,A9
|
||
JRZ SDXXX
|
||
MOVI SD3S,A14
|
||
SDXXX CALLA DO_ALL_STUFF
|
||
MOVE A0,A8
|
||
CALLR ADJU
|
||
MOVI 20000H,B0
|
||
MOVI 50000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,*A8(OYVEL),L
|
||
MOVI -10000H,B0
|
||
MOVI 10000H,B1
|
||
JRUC SIDEO
|
||
|
||
XBOOM:
|
||
.LONG XPLD1
|
||
.WORD 2
|
||
.LONG XPLD2
|
||
.WORD 2
|
||
.LONG XPLD3
|
||
.WORD 2
|
||
.LONG XPLD4
|
||
.WORD 2
|
||
.LONG XPLD5
|
||
.WORD 2
|
||
.LONG XPLD6
|
||
.WORD 2
|
||
.LONG XPLD7
|
||
.WORD 3
|
||
.LONG XPLD8
|
||
.WORD 3
|
||
.LONG XPLD9
|
||
.WORD 3
|
||
.LONG XPLD10
|
||
.WORD 3
|
||
.LONG 0
|
||
XBOOMS:
|
||
.LONG XPLD1
|
||
.WORD 5
|
||
.LONG XPLD2
|
||
.WORD 5
|
||
.LONG XPLD3
|
||
.WORD 5
|
||
.LONG XPLD4
|
||
.WORD 5
|
||
.LONG XPLD5
|
||
.WORD 5
|
||
.LONG XPLD6
|
||
.WORD 5
|
||
.LONG XPLD7
|
||
.WORD 5
|
||
.LONG XPLD8
|
||
.WORD 5
|
||
.LONG XPLD9
|
||
.WORD 5
|
||
.LONG XPLD10
|
||
.WORD 5
|
||
.LONG 0
|
||
XBOOM2:
|
||
.LONG XPLD1
|
||
.WORD NEWPALET|4
|
||
.LONG RDBOOM
|
||
.LONG XPLD2
|
||
.WORD 4
|
||
.LONG XPLD3
|
||
.WORD 4
|
||
.LONG XPLD4
|
||
.WORD 4
|
||
.LONG XPLD5
|
||
.WORD 4
|
||
.LONG XPLD6
|
||
.WORD 4
|
||
.LONG XPLD7
|
||
.WORD 6
|
||
.LONG XPLD8
|
||
.WORD 6
|
||
.LONG XPLD9
|
||
.WORD 6
|
||
.LONG XPLD10
|
||
.WORD 6
|
||
.LONG 0
|
||
SD1:
|
||
.LONG [40H,0],[65H,0],RCTRPC2
|
||
.WORD 289,DMAWNZ|M_NOCOLL,CLSDEAD ;I WILL DELETE MYSELF
|
||
.LONG 0,0
|
||
SD1S: ;DISH
|
||
.LONG [40H,0],[65H,0],DPC2
|
||
.WORD 289,DMAWNZ|M_NOCOLL,CLSDEAD ;I WILL DELETE MYSELF
|
||
.LONG 0,0
|
||
SD2:
|
||
.LONG [30H,0],[65H,0],RCTRPC1
|
||
.WORD 289,DMAWNZ|M_NOCOLL,CLSDEAD ;I WILL DELETE MYSELF
|
||
.LONG 0,0
|
||
SD3:
|
||
.LONG [30H,0],[65H,0],RCTRPC1
|
||
.WORD 289,DMAWNZ|M_FLIPH|M_NOCOLL,CLSDEAD ;I WILL DELETE MYSELF
|
||
.LONG 0,0
|
||
SD3S:
|
||
.LONG [30H,0],[65H,0],DPC3
|
||
.WORD 289,DMAWNZ|M_FLIPH|M_NOCOLL,CLSDEAD ;I WILL DELETE MYSELF
|
||
.LONG 0,0
|
||
BEXP:
|
||
.LONG [3AH,0],[85H,0],XPLD1
|
||
.WORD 295,DMAWNZ|M_NOCOLL,CLSDEAD ;I WILL DELETE MYSELF
|
||
.LONG 0,-22000H
|
||
BEXPD:
|
||
.LONG [3AH,0],[85H,0],XPLD1
|
||
.WORD 295,DMAWNZ|M_NOCOLL,CLSDEAD ;I WILL DELETE MYSELF
|
||
.LONG 0,-12000H
|
||
BEXPD2:
|
||
.LONG [3AH,0],[85H,0],CLD1A
|
||
.WORD 295,DMAWNZ|M_NOCOLL,CLSDEAD ;I WILL DELETE MYSELF
|
||
.LONG 0,-2000H
|
||
BPL:
|
||
.LONG [26H,0],[77H,0],WSTPOOL
|
||
.WORD 281,DMAWNZ|M_NOCOLL,CLSNEUT|TYPNEUT ;289
|
||
.LONG 0,0
|
||
BPL2:
|
||
.LONG [26H,0],[77H,0],WSTPOOL
|
||
.WORD 281,DMAWNZ|M_NOCOLL|M_FLIPH,CLSNEUT|TYPNEUT ;289
|
||
.LONG 0,0
|
||
SHKRC
|
||
;SHAKE REACTOR
|
||
MOVK 12,A10 ;8
|
||
XSL MOVK 10,A9
|
||
XLPS MOVE A9,A0
|
||
CALLR DOXY
|
||
SLEEPK 2
|
||
DSJS A9,XLPS
|
||
DSJ A10,XSL
|
||
DIE
|
||
GOOB:
|
||
.LONG [180H,0],[69H,0],GOOBR
|
||
.WORD 20,DMAWNZ|M_NOCOLL,CLSNEUT|TYPNEUT
|
||
.LONG 0,0
|
||
LENGTH .LONG [3*60,12*60],[20*60,160*60],[20*60,170*60],[4*60,70*60]
|
||
;FOR BARRELS
|
||
.LONG [4*60,120*60],[8*60,46*60],[6*60,15*60],[3*60,10*60]
|
||
.LONG [4*60,120*60],[8*60,46*60],[8*60,100*60],[6*60,30*60]
|
||
.LONG [6*60,30*60],[4*60,17*60],[3*60,30*60],[3*60,30*60] ;WV 15
|
||
.LONG [6*60,50*60],[8*60,46*60],[3*60,10*60],[4*60,20*60]
|
||
.LONG [6*60,34*60] ;FIRST WARP LOCKDOWN
|
||
.LONG [8*60,46*60],[5*60-20,25*60],[6*60-20,10*60]
|
||
.LONG [8*60,46*60],[4*60-20,25*60],[5*60-20,10*60]
|
||
.LONG [8*60,46*60],[4*60-20,25*60],[2*60,8*60]
|
||
.LONG [8*60,26*60],[4*60-20,25*60],[5*60-20,10*60]
|
||
.LONG [5*60,20*60],[4*60-20,25*60],[5*60-20,10*60] ;WV 35
|
||
.LONG [8*60,26*60],[4*60-20,25*60],[3*60-20,14*60]
|
||
.LONG [8*60,26*60],[4*60-20,25*60],[5*60-20,10*60]
|
||
.LONG [10*60,200*60],[4*60-20,25*60],[5*60-20,10*60]
|
||
.LONG 0
|
||
;FOR CRATE
|
||
CLENGTH .LONG [3*60,12*60],[20*60,160*60],[20*60,170*60],[14*60,80*60]
|
||
.LONG [10*60,120*60],[2*60,45*60],[6*60,120*60],[6*60,120*60]
|
||
.LONG [10*60,120*60],[2*60,45*60],[6*60,120*60],[1*60,24*60]
|
||
.LONG [2*60,20*60],[2*60,18*60],[6*60,120*60],[6*60,40*60] ;WV 15
|
||
.LONG [2*60,20*60],[2*60,45*60],[12*60,32*60],[6*60,120*60]
|
||
.LONG [2*60,20*60],[2*60,45*60],[2*60,15*60],[2*60,15*60]
|
||
.LONG [2*60,20*60],[2*60,45*60],[2*60,15*60],[2*60,15*60]
|
||
.LONG [2*60,20*60],[2*60,45*60],[2*60,15*60],[2*60,15*60]
|
||
.LONG [2*60,20*60],[2*60,35*60],[2*60,15*60],[2*60,15*60] ;WV 35
|
||
.LONG [2*60,20*60],[2*60,45*60],[2*60,15*60],[2*60,15*60]
|
||
.LONG [2*60,20*60],[2*60,45*60],[2*60,15*60],[2*60,15*60]
|
||
.LONG [2*60,20*60],[2*60,45*60],[2*60,15*60],[2*60,15*60]
|
||
.LONG 0
|
||
CRATEMAN
|
||
;COULD BE A BARREL
|
||
;A8=CRATE IMG
|
||
CLR A0
|
||
MOVE A0,*A13(SHKIN)
|
||
MOVE A0,*A13(HITS)
|
||
;THIS VALUE SHOULD BE BASED ON WAVE #
|
||
MOVE @WAVE,A0
|
||
SLL 5,A0
|
||
MOVE *A8(OID),A9
|
||
CMPI CLSNEUT|TYPCRTE|SUBBRL,A9
|
||
JRZ OKB
|
||
ADDI CLENGTH,A0
|
||
JRUC OKBB
|
||
OKB ADDI LENGTH,A0
|
||
OKBB MOVE *A0,A0,L
|
||
CLR A1
|
||
MOVX A0,A1
|
||
SRL 16,A0
|
||
MOVE A0,B0
|
||
MOVE A1,B1
|
||
CALLA RANGRAND
|
||
CRT CALLA PRCSLP
|
||
CALLA SCRTST
|
||
JRNZ BRLO0
|
||
CRT00 SLEEPK 1
|
||
MOVE @HALT,A0
|
||
JRNZ CRT00
|
||
MOVK 3,A10
|
||
ASL MOVK 10,A9
|
||
ALPS MOVE A9,A0
|
||
CALLR DOXY
|
||
SLEEPK 3
|
||
DSJS A9,ALPS
|
||
DSJ A10,ASL
|
||
CALLR CRT_1
|
||
CLR A1 ;YES DO CHUNKS
|
||
MOVE A1,*A0(PDATA+128),W
|
||
DIE
|
||
|
||
BRLO0 jauc DELOBJDIE
|
||
|
||
BRLO MOVE A8,A0
|
||
CALLA ISOBJ
|
||
* Z BIT SET = NO OBJECT, A0 = 0 *
|
||
* Z BIT CLR = NO OBJECT, A0 = PTR TO OBJECT *
|
||
JRZ BDI
|
||
MOVE *A8(OIMG),A1,L
|
||
CMPI BRRL2,A1
|
||
JRNZ BDI
|
||
CALLA DELOBJ
|
||
BDI DIE
|
||
SHKCRT
|
||
MOVK 10,A9
|
||
LPS MOVE A9,A0
|
||
CALLR DOXY
|
||
SLEEPK 3
|
||
DSJS A9,LPS
|
||
MOVE A9,*A13(SHKIN)
|
||
MOVE A10,A0
|
||
JRUC CRT
|
||
DOXY
|
||
SLL 3,A0
|
||
MOVI SHKX,A1
|
||
ADD A0,A1
|
||
MOVB *A1,A1
|
||
ADDI SHKY,A0
|
||
MOVB *A0,A0
|
||
MOVE *A8(OXPOS),A2,W
|
||
ADD A1,A2
|
||
MOVE A2,*A8(OXPOS),W
|
||
MOVE *A8(OYPOS),A2,W
|
||
ADD A0,A2
|
||
MOVE A2,*A8(OYPOS),W
|
||
RETS
|
||
|
||
SHKX .BYTE 0,-2,0,2,-2,0,2,-1,-1,2,0
|
||
SHKY .BYTE 0,0,2,-1,1,-2,2,-1,0,-2,1
|
||
.EVEN
|
||
|
||
KILL_CRT3: ;PLAYER RUNNING INTO IT AND WALL!
|
||
MMTM SP,A1,A2,A7,A9
|
||
;A8=PLAYER
|
||
MOVE *A8(OPLINK),A0,L
|
||
MOVI P1DATA,A2
|
||
MOVE *A0(PNUM),A10
|
||
DEC A10
|
||
JRZ KC3
|
||
MOVI P2DATA,A2
|
||
KC3 MOVI CRTPT2,A1
|
||
CALLA SCRADD2
|
||
MOVE A9,A8
|
||
MOVE *A8(OXPOS),A0
|
||
MOVE *A8(OYVAL),A9,L
|
||
MOVX A0,A9
|
||
CREATE FUTUREPID,SECRET_B
|
||
JRUC NOSCR
|
||
KILL_CRT2: ;TIME BOMB
|
||
MMTM SP,A1,A2,A7,A9
|
||
CLR A1
|
||
MOVE A1,*A0(OID),W
|
||
JRUC TOEXP
|
||
SECRET_B
|
||
;TURN ON SECRET BONUS
|
||
MOVE A9,A1
|
||
MOVX A9,A0
|
||
SLL 16,A0
|
||
MOVI SECBON,A2 ;IMG
|
||
MOVI 460,A3 ;ZPOS
|
||
MOVI DMAWNZ|M_NOCOLL,A4 ;NON-ZERO VALUE
|
||
MOVI CLSDEAD,A5 ;I DELETE MYSELF ID
|
||
CLR A6
|
||
CLR A7
|
||
CALLA BEGINOBJ2 ;NO WORLD ADDED IN
|
||
CALLA CYCLEON
|
||
MOVI 50,B0
|
||
MOVI 90,B1
|
||
CALLA RANGRAND
|
||
CALLA PRCSLP
|
||
CLR A11
|
||
JRUC INHERE
|
||
|
||
KILL_CRT:
|
||
;CRATE TO FLASH, EXPLODE
|
||
MMTM SP,A1,A2,A7,A9
|
||
MOVE *A8(OPLINK),A1,L
|
||
MOVE *A1(SHKIN),A9
|
||
JRNZ NOSHK
|
||
;START CRATE PROCESS SHAKING
|
||
MOVE A1,*A1(SHKIN) ;SET FLAG
|
||
MMTM SP,A0,A1
|
||
MOVE A1,A0
|
||
MOVE *A1(PTIME),A10
|
||
MOVI CMAN,A1
|
||
MOVI SHKCRT,A7
|
||
CALLA XFERPROC
|
||
MMFM SP,A0,A1
|
||
NOSHK
|
||
MOVE *A0(OID),A9,W ;KILLERS OID
|
||
ANDI F_SUBT,A9
|
||
SLL 4,A9
|
||
ADDI PUNISHT,A9
|
||
MOVE *A9,A9
|
||
MOVE *A1(HITS),A7
|
||
ADD A9,A7
|
||
MOVE A7,*A1(HITS)
|
||
CMPI 85,A7 ;60
|
||
JRLT OKTF
|
||
;KILLED BY BULLET
|
||
;ADD TO PLYR SCORE
|
||
TOEXP
|
||
MOVE *A0(OPLINK),A0,L
|
||
MOVE *A0(MYPLYR),A0
|
||
MOVI P1DATA,A2
|
||
DEC A0
|
||
JRZ TOEXP2
|
||
CMPI 1,A0
|
||
JRNZ NOSCR
|
||
MOVI P2DATA,A2
|
||
TOEXP2 MOVI CRTPT,A1
|
||
CALLA SCRADD2 ;DO IT!
|
||
NOSCR
|
||
; MOVK MISLPUN,A0
|
||
;WILL EXPLODE
|
||
CALLR CRT_1
|
||
MOVK MISLPUN,A1
|
||
MOVE A1,*A0(PDATA+128),W
|
||
MOVE *A8(OPLINK),A0,L
|
||
MOVE *A0(PROCID),A1,W
|
||
CMPI CMAN,A1
|
||
JRNZ NXS
|
||
CALLA KILL
|
||
NXS MOVK 1,A0
|
||
MOVE A0,@OUT_FLG
|
||
MMFM SP,A1,A2,A7,A9
|
||
RETS
|
||
|
||
CRT_1
|
||
;START EXPLODE
|
||
;JEWELS, HOSTAGES, BAD GUYS MAY APPEAR!
|
||
; MOVE A0,@KEEPXY
|
||
MOVI ALTEXP3,A0
|
||
CALLA ONESND
|
||
MOVE *A8(OFLAGS),A0
|
||
ORI M_NOCOLL,A0
|
||
MOVE A0,*A8(OFLAGS)
|
||
MOVE *A8(OID),A9
|
||
CMPI CLSNEUT|TYPCRTE|SUBBRL,A9
|
||
JRNZ FFE ;FLASH BARREL!
|
||
CREATE SHOTPID,EXPLB
|
||
RETS
|
||
FFE CREATE SHOTPID,EXPL
|
||
RETS
|
||
|
||
OKTF MOVI 03F3F0000H,A9
|
||
CREATE0 FLASHME
|
||
MMFM SP,A1,A2,A7,A9
|
||
RETS
|
||
|
||
;SUBLZR .EQU 0001H ;REGULAR LAZER SHOTS
|
||
;SUBSPRY .EQU 0002H ;SPRAY SUB TYPE
|
||
;SUBFIRE1 .EQU 0003H ;FIRE BALL WPN
|
||
;SUBGRND .EQU 0004H ;GRENADE
|
||
;SUBNOSTP .EQU 0005H ;NON STOPPING BULLET
|
||
;SUBSPDG1 .EQU 0006H ;MACHINE GUN TYP WPN
|
||
|
||
PUNISHT: ;0,REGULAR,SPRAY,0,0,NONSTOP,0
|
||
.WORD 0,3,4,0,0,MISLPUN,0,0 ;NONSTOP TO STAY SAME! OTHERS USE IT
|
||
EXPLB
|
||
;BARREL TO EXPLODE
|
||
; MOVE A9,*A13(PDATA+128)
|
||
CLR A9
|
||
MOVK 2,A5
|
||
CALLR PIT2
|
||
SLEEPK 10
|
||
MOVI CLSTS,A11
|
||
CLR A9 ;A9=XVEL
|
||
CLR A10 ;A10=YVEL
|
||
MOVE @PCTOT,A0
|
||
CMPI 20,A0
|
||
JRNC SKPU
|
||
CREATE CMAN,CHUNK_OBJ
|
||
SKPU MOVE A10,*A0(PDATA),W ;NO PAL CHANGE
|
||
|
||
; MOVE @KEEPXY,A0
|
||
MOVE *A13(PDATA+128),A0
|
||
|
||
CMPI MISLPUN,A0 ;# IS SAME AS IN PUNISH TABLE FOR MSL
|
||
JRNZ NOMIS
|
||
;MISSILE KILLED BARREL, NO SHRAPNEL
|
||
JRUC BULLGN0
|
||
NOMIS
|
||
MOVE @SCNTR,A3
|
||
INC A3
|
||
MOVE A3,@SCNTR
|
||
ANDI 01,A3
|
||
SLL 5,A3
|
||
MOVI PLYROBJS,A2
|
||
ADD A3,A2
|
||
MOVE *A2,A0,L ;GET FIRST ENTRY
|
||
JRNZ PX
|
||
XORI 32,A3
|
||
ADDI PLYROBJS,A3
|
||
MOVE *A3,A0,L
|
||
|
||
PX CALLA XYSKOBJ
|
||
|
||
MOVE A5,A1
|
||
MOVE A6,A2
|
||
CALLA GETADIR2
|
||
MOVE A0,A9 ;FROM SHAWN!
|
||
CLR A10
|
||
CREATE SHRPPID,SHRAPNL
|
||
MOVK 1,A10
|
||
CREATE SHRPPID,SHRAPNL
|
||
MOVK 2,A10
|
||
CREATE SHRPPID,SHRAPNL
|
||
MOVK 3,A10
|
||
CREATE SHRPPID,SHRAPNL
|
||
MOVK 4,A10
|
||
CREATE SHRPPID,SHRAPNL
|
||
BULLGN0 SLEEPK 8
|
||
BULLGN jauc DELOBJDIE
|
||
|
||
;CVRT .BYTE 0,3,7,5,1,4,6,2,8
|
||
; .EVEN
|
||
YVTBL .LONG 0,Y1,Y2,Y3,Y4,Y5,Y6,Y7,Y8
|
||
XVTBL .LONG 0,X1,X2,X3,X4,X5,X6,X7,X8
|
||
|
||
X8: .LONG 0,-10000H,-1C000H,-20000H,-20000H
|
||
Y8: .LONG -18000H,-1C000H,-1A000H,-10000H,0
|
||
;Y8: .LONG -18000H,-1C000H,10000H,-10000H,0
|
||
;
|
||
X1: .LONG -20000H,-10000H,0,10000H,20000H ;UP
|
||
Y1: .LONG -10000H,-18000H,-1C000H,-18000H,-10000H
|
||
|
||
X2: .LONG 0,10000H,1C000H,20000H,20000H
|
||
Y2: .LONG -18000H,-1C000H,-1A000H,-10000H,0
|
||
|
||
X3: .LONG 10000H,20000H,23000H,20000H,10000H
|
||
Y3: .LONG -20000H,-10000H,0,10000H,20000H
|
||
|
||
X4: .LONG 0,10000H,1C000H,20000H,20000H
|
||
Y4: .LONG 18000H,1C000H,1A000H,10000H,0
|
||
|
||
X5: .LONG -20000H,-10000H,0,10000H,20000H
|
||
Y5: .LONG 10000H,18000H,1C000H,18000H,10000H
|
||
|
||
X6: .LONG 0,-10000H,-1C000H,-20000H,-20000H
|
||
Y6: .LONG 18000H,1C000H,1A000H,10000H,0
|
||
|
||
X7: .LONG -10000H,-20000H,-23000H,-20000H,-10000H
|
||
Y7: .LONG -20000H,-10000H,0,10000H,20000H
|
||
|
||
SHRAP
|
||
.LONG SLUD1
|
||
.WORD 3
|
||
.LONG SLUD2
|
||
.WORD 3
|
||
.LONG SLUD3
|
||
.WORD 3
|
||
.LONG SLUD4
|
||
.WORD 3
|
||
.LONG SLUD5
|
||
.WORD 3
|
||
.LONG SLUD6
|
||
.WORD 3
|
||
.LONG SLUD1
|
||
.WORD 3
|
||
.LONG SLUD2
|
||
.WORD 3
|
||
.LONG SLUD3
|
||
.WORD 3
|
||
.LONG SLUD4
|
||
.WORD 3
|
||
.LONG SLUD5
|
||
.WORD 3
|
||
.LONG SLUD6
|
||
.WORD 3
|
||
.LONG 0
|
||
|
||
SHRAPNL
|
||
;TURN ON OBJECT AT CORRECT XY
|
||
;GET VELOCITY BASED ON DIRECTION IN A9 INDEX INTO TABLE WITH A10
|
||
SLL 5,A9
|
||
MOVI YVTBL,A0
|
||
ADD A9,A0
|
||
MOVE *A0,A7,L
|
||
ADDI XVTBL,A9 ;GET VELOCITY TABLE
|
||
MOVE *A9,A6,L
|
||
SLL 5,A10
|
||
ADD A10,A6
|
||
MOVE *A6,A6,L
|
||
ADD A10,A7
|
||
MOVE *A7,A7,L
|
||
|
||
CALLA GETANIXY
|
||
* A2 = APOINT OYVAL, 32 BITS *
|
||
* A3 = APOINT OXVAL, 32 BITS *
|
||
MOVE A2,A1
|
||
MOVE A3,A0
|
||
MOVI 293,A3 ;242 159
|
||
MOVI DMAWNZ,A4
|
||
MOVI CLSENMY|TYPGOO,A5 ;ENMY|TYPSHOT,A5
|
||
MOVI SLUD1,A2
|
||
CALLA BEGINOBJ2
|
||
MOVI SHRAP,A9
|
||
MOVI SHRAP,A10
|
||
|
||
MOVI SLM,A0
|
||
MOVE A0,*A13(MYLIST),L
|
||
MOVI SQUISH,A0 ;FOR WHEN I GOOB ONTO PLAYER
|
||
MOVE A0,*A13(MYSND),L
|
||
BSTART
|
||
MOVK 18,A0 ;23
|
||
MOVE A0,*A13(BLAGE)
|
||
MOVK 15,A0 ;1
|
||
MOVE A0,*A13(FDLY) ;FRANIM DELAY
|
||
CLR A0
|
||
MOVE A0,*A13(FXOR)
|
||
MOVE A0,*A13(MYPLYR)
|
||
jruc BULL_TOP
|
||
|
||
bslp SLEEPK 1
|
||
BULL_TOP
|
||
move *a13(FXOR),a0 ;>Bullet collison check
|
||
movk 1,a1
|
||
xor a1,a0
|
||
move a0,*a13(FXOR)
|
||
sll 5,a0
|
||
addi PLYRPRCS,a0,L
|
||
move *a0,a3,L
|
||
jrz bmiss
|
||
move *a3(LEG_PTR),a0,L
|
||
|
||
move *a8(OXPOS),a6 ;Get shot X
|
||
move *a8(OSIZEX),a1
|
||
srl 1,a1
|
||
add a1,a6 ;Center X
|
||
|
||
move *a0(OXPOS),a4
|
||
subk 2,a4 ;X offset
|
||
sub a4,a6
|
||
jrlt bmiss
|
||
subk 12,a6 ;Width
|
||
jrhs bmiss
|
||
|
||
move *a8(OYPOS),a7 ;Get shot Y
|
||
move *a8(OSIZEY),a1
|
||
srl 1,a1
|
||
add a1,a7 ;Center Y
|
||
|
||
move *a0(OYPOS),a5
|
||
subk 10,a5 ;Y offset
|
||
sub a5,a7
|
||
jrlt bmiss
|
||
subk 21,a7 ;Height
|
||
jrhs bmiss
|
||
|
||
|
||
move *a3(DEAD),a1
|
||
jrnz DOSLM
|
||
move *a3(DELYDET),a1
|
||
jrnz DOSLM
|
||
callr DO_GOOJ
|
||
|
||
DOSLM CLR A0
|
||
MOVE A0,*A8(OXVEL),L
|
||
MOVE A0,*A8(OYVEL),L
|
||
MOVI 160,A0
|
||
MOVE A0,*A8(OZPOS)
|
||
DOSLM2 MOVE *A13(MYLIST),A9,L ;SLM,A9
|
||
MOVE *A13(MYSND),A0,L
|
||
JRZ RTAG
|
||
CALLA ONESND
|
||
RTAG jauc FRQDELDIE
|
||
|
||
|
||
bmiss move *a13(FDLY),a0
|
||
dec a0
|
||
move a0,*a13(FDLY)
|
||
jrnz bslp
|
||
|
||
MOVE A9,A9
|
||
JRNZ ANIM
|
||
MOVE *A13(BLAGE),A0 ;THIS BULLET IS NOT ANIMATING!
|
||
DEC A0
|
||
MOVE A0,*A13(BLAGE)
|
||
JRZ BULLGN
|
||
MOVK 3,A1
|
||
AND A1,A0
|
||
JRNZ NRT
|
||
CALLA SCRTST
|
||
JRNZ BULLGN
|
||
NRT MOVK 10,A0
|
||
MOVE A0,*A13(FDLY)
|
||
CALLA CHK_BULL
|
||
JRC BULLGN ;BR=SHOT HAS HIT WALL
|
||
jruc bslp
|
||
|
||
|
||
ANIM MOVK 4,A1
|
||
JSRP FRANIM
|
||
JRNC C3
|
||
MOVE A10,A9 ;RESET A9 LIST PNTR
|
||
MOVK 3,A0
|
||
MOVE A0,*A13(FDLY)
|
||
MOVI 159,A1 ;133
|
||
MOVE A1,*A8(OZPOS)
|
||
|
||
calla SCRTST
|
||
jrnz BULLGN ;Off screen?
|
||
|
||
calla CHK_BULL
|
||
jrnc bslp
|
||
clr a0 ;hit
|
||
move a0,*a13(MYSND),L
|
||
jruc DOSLM
|
||
|
||
C3 move a0,*a13(FDLY)
|
||
jruc BULL_TOP
|
||
|
||
|
||
*****************************************************************************
|
||
|
||
;CHECK GOOB BALL IN A8 AGAINST PLAYERS
|
||
;A8=GOOB BALL PNTR
|
||
;CALL WITH THE FOLLOWING INFO SET UP IN PDATA:
|
||
;FXOR .EQU PDATA+144 ;UHW SHOULD BE 0 OR 1 TO START WITH
|
||
;MYLIST .EQU PDATA+64 ;UHL FRANIM LIST FOR THIS GOOB UPON DEATH
|
||
;MYSND .EQU PDATA+96 ;UHL SOUND HEADER FOR GOO TYPE DEATH
|
||
|
||
CK_GOOB
|
||
move *a13(FXOR),a0
|
||
movk 1,a1
|
||
xor a1,a0
|
||
move a0,*a13(FXOR)
|
||
sll 5,a0
|
||
addi PLYRPRCS,a0,L
|
||
move *a0,a0,L
|
||
jrz ICANT
|
||
move *a0(DEAD),a1 ;is player dead?
|
||
jrnz ICANT ;yup!
|
||
move *a0(DELYDET),a1 ;is player invincible right now?
|
||
jrnz ICANT ;yup!
|
||
move *a0(LEG_PTR),a0,L
|
||
|
||
move *a8(OXPOS),a6 ;Get shot X
|
||
move *a8(OSIZEX),a2
|
||
srl 1,a2
|
||
add a2,a6 ;Center X
|
||
|
||
move *a0(OXPOS),a4
|
||
subk 2,a4 ;X offset
|
||
sub a4,a6
|
||
jrlt ICANT
|
||
subk 12,a6 ;Width
|
||
jrhs ICANT
|
||
|
||
move *a8(OYPOS),a7 ;Get shot Y
|
||
move *a8(OSIZEY),a2
|
||
srl 1,a2
|
||
add a2,a7 ;Center Y
|
||
|
||
move *a0(OYPOS),a5
|
||
subk 6,a5 ;Y offset
|
||
sub a5,a7
|
||
jrlt ICANT
|
||
subk 20,a7 ;Height
|
||
jrhs ICANT
|
||
|
||
callr DO_GOOJ ;HIT
|
||
ICANT rets
|
||
|
||
********************************
|
||
|
||
DO_GOOJ ;A8=*Shot obj
|
||
|
||
mmtm sp,a8,a10
|
||
move a8,a10 ;Pass to GOOJ
|
||
SWAP A0,A8
|
||
CALLA SHOTKILL ;START PLAYER DEATH
|
||
|
||
MOVK 7,A6 ;5 MAYBE
|
||
FHZ2 CREATE0 GOOJ
|
||
MOVE *A13(MYLIST),A1,L ;SLM,A9
|
||
MOVE A1,*A0(MYLIST),L
|
||
MOVE *A13(MYSND),A1,L
|
||
MOVE A1,*A0(MYSND),L
|
||
DSJ A6,FHZ2
|
||
mmfm sp,a8,a10
|
||
RETS
|
||
|
||
*****************************************************************************
|
||
|
||
GOOJ ;A10=*Shot obj
|
||
|
||
MOVK 1,B0
|
||
MOVK 10,B1
|
||
CALLA RANGRAND
|
||
CALLA PRCSLP
|
||
MOVI -7800H,B0
|
||
MOVI 7800H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A7
|
||
MOVI -8000H,B0
|
||
MOVI 8000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A6
|
||
MOVI -7,B0
|
||
MOVK 7,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A9
|
||
MOVI -2,B0 ;-7
|
||
MOVK 18,B1 ;7
|
||
CALLA RANGRAND
|
||
MOVE A0,A1
|
||
MOVE *A10(OXPOS),A0
|
||
ADD A1,A0
|
||
MOVE *A10(OYPOS),A1
|
||
ADD A9,A1
|
||
SLL 16,A0
|
||
SLL 16,A1
|
||
MOVI SLUD1,A2 ;IMG
|
||
MOVI 159,A3 ;ZPOS
|
||
MOVI DMAWNZ|M_NOCOLL,A4 ;NON-ZERO VALUE
|
||
MOVI CLSDEAD,A5 ;I DELETE MYSELF ID
|
||
CALLA BEGINOBJ2 ;NO WORLD ADDED IN
|
||
JRUC DOSLM2
|
||
|
||
|
||
SLM .LONG SLMD1
|
||
.WORD 5
|
||
.LONG SLMD2
|
||
.WORD 5
|
||
.LONG SLMD3
|
||
.WORD 5
|
||
.LONG SLMD4
|
||
.WORD 15
|
||
.LONG SLMD3
|
||
.WORD 4
|
||
.LONG SLMD2
|
||
.WORD 4
|
||
.LONG SLMD1
|
||
.WORD 4
|
||
.LONG 0
|
||
|
||
EXPL
|
||
;CRATE TO EXPLODE
|
||
;START OTHER BLUE EXPLOSIONS
|
||
CALLR DOLOTS
|
||
SLEEPK 13
|
||
MOVE *A8(OYPOS),A0
|
||
ADDK 11,A0
|
||
MOVE A0,*A8(OYPOS)
|
||
MOVE *A8(OXPOS),A0
|
||
SUBK 3,A0
|
||
MOVE A0,*A8(OXPOS)
|
||
MOVI 40,A0
|
||
MOVE A0,*A8(OZPOS)
|
||
MOVI CRT3,A1 ;BROKEN CRATE
|
||
MOVE *A8(OFLAGS),A4
|
||
; MOVE A8,A0 ;GET RID OF CRATE ALTOGETHER!
|
||
; CALLA DELOBJ
|
||
CALLA ANI
|
||
SLEEPK 15
|
||
|
||
MOVE @WAVE,A0
|
||
SLL 3,A0
|
||
ADDI HTYP,A0
|
||
MOVB *A0,A0
|
||
JRZ MKFND
|
||
;BRING OUT FIEND
|
||
CREATE AHMDPID,CRT_AHMD ;FLAME THROWER DUDE
|
||
DIE
|
||
MKFND
|
||
;BRING OUT FIEND
|
||
CREATE FNDPID,FIEND ;PURPLE FIEND FROM CRATE
|
||
DIE
|
||
HTYP .BYTE 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1
|
||
.BYTE 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1
|
||
.BYTE 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1
|
||
.EVEN
|
||
DOLOTS
|
||
MOVK 3,A5
|
||
MOVK 1,A9
|
||
PIT
|
||
MOVK 3,A10 ;SLEEP THIS LONG BEFORE BLOWING
|
||
CREATE SHOTPID,EXPTBMB
|
||
MOVK 6,A10 ;SLEEP THIS LONG BEFORE BLOWING
|
||
CREATE SHOTPID,EXPTBMB
|
||
PIT2
|
||
MOVK 8,A10 ;SLEEP THIS LONG BEFORE BLOWING
|
||
CREATE SHOTPID,EXPTBMB
|
||
MOVK 14,A10 ;SLEEP THIS LONG BEFORE BLOWING
|
||
CREATE SHOTPID,EXPTBMB
|
||
MOVK 2,A10 ;SLEEP THIS LONG BEFORE BLOWING
|
||
CREATE SHOTPID,EXPTBMB
|
||
DSJ A5,PIT
|
||
RETS
|
||
|
||
CLSTS .LONG RP1,WOODPC,WOODPC2,WOODPC3,WOODPC4,WOODPC2,WOODPC,WOODPC4
|
||
.LONG WOODPC5,0
|
||
BLSTS2A .LONG RP1,RPC,RPC,WOODPC4,WOODPC3
|
||
.LONG WOODPC5,0
|
||
BLSTS2 .LONG RP1,RPC,RPC,RPC,RPC,RPC,RPC,WOODPC4,WOODPC3,WOODPC2,WOODPC
|
||
.LONG WOODPC5,0
|
||
RPC .LONG OPC1
|
||
.WORD NEWPALET|2
|
||
.LONG REACTR
|
||
.LONG OPC2
|
||
.WORD 4
|
||
.LONG OPC3
|
||
.WORD 4
|
||
.LONG OPC4
|
||
.WORD 4
|
||
.LONG OPC5
|
||
.WORD 4
|
||
.LONG OPC6
|
||
.WORD 4
|
||
.LONG OPC7
|
||
.WORD 4
|
||
.LONG OPC8
|
||
.WORD 4
|
||
.LONG OPC8
|
||
.WORD 4
|
||
.LONG 0
|
||
WOODPC
|
||
.LONG RP1
|
||
.WORD FLIPBITS|1,(M_FLIPV)
|
||
.LONG RP2
|
||
.WORD 4
|
||
.LONG RP3
|
||
.WORD 4
|
||
.LONG RP4
|
||
.WORD 4
|
||
.LONG RP5
|
||
.WORD 4
|
||
.LONG RP6
|
||
.WORD 4
|
||
.LONG RP7
|
||
.WORD 4
|
||
.LONG RP8
|
||
.WORD 4
|
||
.LONG RP9
|
||
.WORD 4
|
||
.LONG RP10
|
||
.WORD 4
|
||
.LONG 0
|
||
WOODPC4
|
||
.LONG RP1
|
||
.WORD 10
|
||
.LONG RP2
|
||
.WORD 5
|
||
.LONG RP3
|
||
.WORD 5
|
||
.LONG RP4
|
||
.WORD 5
|
||
.LONG RP5
|
||
.WORD 5
|
||
.LONG RP6
|
||
.WORD 4
|
||
.LONG RP7
|
||
.WORD 4
|
||
.LONG RP8
|
||
.WORD 4
|
||
.LONG RP9
|
||
.WORD 4
|
||
.LONG RP10
|
||
.WORD 4
|
||
.LONG 0
|
||
WOODPC3
|
||
.LONG RP1
|
||
.WORD FLIPBITS|19,(M_FLIPH)
|
||
.LONG RP2
|
||
.WORD 4
|
||
.LONG RP3
|
||
.WORD 4
|
||
.LONG RP4
|
||
.WORD 4
|
||
.LONG RP5
|
||
.WORD 4
|
||
.LONG RP6
|
||
.WORD 4
|
||
.LONG RP7
|
||
.WORD 4
|
||
.LONG RP8
|
||
.WORD 4
|
||
.LONG RP9
|
||
.WORD 4
|
||
.LONG RP10
|
||
.WORD 4
|
||
.LONG 0
|
||
WOODPC2
|
||
.LONG RSR1
|
||
.WORD FLIPBITS|19,(M_FLIPH+M_FLIPV)
|
||
.LONG RSR2
|
||
.WORD 4
|
||
.LONG RSR3
|
||
.WORD 4
|
||
.LONG RSR4
|
||
.WORD 4
|
||
.LONG RSR5
|
||
.WORD 4
|
||
.LONG RSR6
|
||
.WORD 4
|
||
.LONG RSR7
|
||
.WORD 4
|
||
.LONG RSR8
|
||
.WORD 4
|
||
.LONG RSR9
|
||
.WORD 4
|
||
.LONG 0
|
||
WOODPC5
|
||
.LONG RSR1
|
||
.WORD 5
|
||
.LONG RSR2
|
||
.WORD 5
|
||
.LONG RSR3
|
||
.WORD 5
|
||
.LONG RSR4
|
||
.WORD 5
|
||
.LONG RSR5
|
||
.WORD 5
|
||
.LONG RSR6
|
||
.WORD 5
|
||
.LONG RSR7
|
||
.WORD 5
|
||
.LONG RSR8
|
||
.WORD 5
|
||
.LONG RSR9
|
||
.WORD 5
|
||
.LONG 0
|
||
|
||
TAKEEL
|
||
MOVI 02860000H,A0
|
||
MOVI 06F0000H,A1
|
||
MOVI TAKEIT,A2 ;IMG
|
||
JRUC INH
|
||
SPATH
|
||
;A8=REACTOR
|
||
SLEEPK 30
|
||
MOVI TARGPID,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA EXISTP
|
||
JRNZ SPATH
|
||
;NOT SCROLLING TO A TARGET XY
|
||
SLEEP 300
|
||
|
||
CLR A0
|
||
MOVE A0,@TMP
|
||
|
||
;CHECK FOR SECRET PASSAGE MESSAGE
|
||
move @P1DATA+TKEYS,a0
|
||
move @P2DATA+TKEYS,a1
|
||
add a1,a0
|
||
CMPI 140,A0
|
||
JRLT NOPE2
|
||
;CHECK TOTAL # OF KEYS COLLECTED HERE!
|
||
;OPEN SECRET PATH
|
||
;A8=REACTOR
|
||
;START A PROCESS WHICH CHECKS PLAYERS XY EVERY 10 TICKS
|
||
CLR A9
|
||
CREATE SECDR,CK_SECRET
|
||
MOVE *A8(OXVAL),A0,L
|
||
ADDI 0610000H,A0
|
||
MOVE *A8(OYVAL),A1,L
|
||
ADDI 0200000H,A1
|
||
MOVI PATH,A2 ;IMG
|
||
JRUC INH
|
||
DROPBMB:
|
||
;A8=GATE
|
||
MOVE *A8(OXVAL),A0,L
|
||
ADDI 0330000H,A0
|
||
MOVE *A8(OYVAL),A1,L
|
||
ADDI 0300000H,A1
|
||
MOVI DROPIT,A2 ;IMG
|
||
INH MOVI 60,A3 ;ZPOS
|
||
MOVI DMAWNZ|M_NOCOLL,A4 ;NON-ZERO VALUE
|
||
MOVI CLSNEUT|TYPNEUT,A5 ;ID
|
||
CLR A6 ;XVEL
|
||
CLR A7 ;YVEL
|
||
CALLA BEGINOBJ2 ;NO WORLD ADDED IN
|
||
MOVE A8,A0
|
||
CALLA OBJOFF
|
||
DROPBMBA
|
||
SLEEPK 30
|
||
MOVI TARGPID,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA EXISTP
|
||
JRNZ DROPBMBA
|
||
;NOT SCROLLING TO A TARGET XY
|
||
SLEEP 120
|
||
MOVK 25,A10
|
||
MANY
|
||
SLEEPK 15
|
||
MOVE A8,A0
|
||
CALLA OBJON
|
||
SLEEPK 15
|
||
MOVE A8,A0
|
||
CALLA OBJOFF
|
||
DSJ A10,MANY
|
||
DOUT jauc DELOBJDIE
|
||
|
||
NOPE2 DIE
|
||
KILL_GATE
|
||
;TIME BOMB HAS EXPLODED NEAR GATE
|
||
MMTM SP,A1,A7,A9,A11
|
||
;NOT SCROLLING, CAN BLOW UP GATE!
|
||
CLR A1
|
||
MOVE A1,*A8(OID),W ;ZERO TIME BOMB OID
|
||
MOVE *A8(OPLINK),A0,L
|
||
MOVE *A0(MYPLYR),A9
|
||
CREATE0 GATE_EXP
|
||
EX MMFM SP,A1,A7,A9,A11
|
||
RETS
|
||
CK_SECRET
|
||
;CHECK FOR EITHER PLAYER TO ENTER SECRET PASSAGE WAY
|
||
;A9=PATH # 0-?
|
||
;FOR #1 01F, 050H
|
||
; DIE
|
||
SLEEP 8*60 ;UNTIL SCROLLING STOPS!
|
||
CK_SEC SLEEPK 30
|
||
MOVE @PLYROBJS,A0,L
|
||
JRZ NXT
|
||
CALLR CKIT
|
||
JRC AHIT
|
||
NXT MOVE @PLYROBJS+32,A0,L
|
||
JRZ CK_SEC
|
||
CALLR CKIT
|
||
JRNC CK_SEC
|
||
|
||
AHIT
|
||
;SMART BOMB SCREEN
|
||
;TURN OFF ALL BARRELS/CRATE PROCESSES
|
||
;WIPE TO NEW MODULE
|
||
;HAVE PLAYERS RUN OUT ONTO NEW SCREEN
|
||
;WHAT IF CRUISE MISSILIES ARE COMING DURING SECRET PATH ENTER?
|
||
MOVE A0,A9
|
||
;A9=PLYR IMG PTR WHO GOT ME FOR SMART BOMB
|
||
MOVI TARGPID,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA KILALL
|
||
MOVI DELPID,A0
|
||
CALLA KILALL
|
||
|
||
MOVI WRPSND,A0
|
||
CALLA ONESNDOVR
|
||
|
||
MOVI PALB,A11
|
||
JSRP FADE_STRT
|
||
|
||
MOVE @KEEPIT,A0,L ;GET RID OF RIGHT SIDE POOL
|
||
CALLA ISOBJ
|
||
* Z BIT SET = NO OBJECT, A0 = 0 *
|
||
* Z BIT CLR = NO OBJECT, A0 = PTR TO OBJECT *
|
||
JRZ SKPMI
|
||
CALLA DELOBJ
|
||
SKPMI
|
||
MOVI [08FEH,0],A0
|
||
MOVE A0,@WORLDTLY,L
|
||
CLR A0
|
||
MOVE A0,@WORLDTLX,L
|
||
|
||
SLEEPK 2
|
||
;KILL EVERYTHING BUT PLAYER STUFF
|
||
;SHOW NEW BLIMP MODULE
|
||
CALLA KILBGND
|
||
SLEEPK 2
|
||
CALLR DO5
|
||
SLEEPK 1
|
||
|
||
CALLA BGND_UD1
|
||
MOVI frtcls2,a0
|
||
CALLA BLAKOUT
|
||
MOVI PALCNO,A0
|
||
MOVK 2,A1
|
||
CALLA FADEIN
|
||
MOVI PALBNO,A0
|
||
CALLA FB_FADEIN
|
||
|
||
MOVE *A13(PNUM),A8 ;FOR SCRIPTPLAY
|
||
MOVE @STATUS,A8
|
||
CMPI 3,A8
|
||
JRNZ OP
|
||
MOVK 1,A8
|
||
MOVK 2,A10 ;INDICATES FROM LOWER RIGHT
|
||
CREATE SCRPID,SCRIPTPLAY
|
||
CALLR SETXY
|
||
MOVK 2,A8
|
||
OP MOVK 2,A10 ;INDICATES FROM LOWER RIGHT
|
||
CREATE SCRPID,SCRIPTPLAY
|
||
CALLR SETXY
|
||
|
||
CALLA BGND_UD1
|
||
SLEEPK 1
|
||
CALLA BGND_UD1
|
||
SLEEPK 1
|
||
CALLA BGND_UD1
|
||
CLR A0
|
||
MOVE A0,@HALT
|
||
SLEEP 50
|
||
CREATE JOYPID,JOY_UPDATE
|
||
;FADE IN COMPLETE
|
||
MOVI ICN3,A0
|
||
MOVE A0,@ICLIST,L
|
||
CREATE ICONPID,SEND_ICON
|
||
|
||
DOATP ;FOR DEBUG = START=2
|
||
CLR A0
|
||
MOVE A0,@CRSRAM,L
|
||
CALLA SETC2
|
||
MOVI frtcls2,A8 ;PAL NAME
|
||
MOVI PALTMP,A9 ;RAM AREA
|
||
MOVI [58,64],A10 ;BEGIN/END COLOR #
|
||
MOVK 7,A11 ;RATE IN TICKS
|
||
CREATE CYCPID,COLCYC ;COLOR CYCLER ON
|
||
CALLA STRT_G ;GOOB POOLS
|
||
|
||
SLEEPK 1
|
||
;KILL OFF SCRN IMAGES
|
||
;REALIGN PLAYERS
|
||
;START THEM RUNNING IN
|
||
;PUT UP ZULU TYPE TEXT MESSAGE AFTER A MOMENT
|
||
MOVK 2,A10
|
||
MOVI [24,0],A9 ;Y ADD IN VALUE
|
||
CREATE0 ZONE_TXT2
|
||
SLEEP 120
|
||
MOVK 18,A0
|
||
MOVE A0,@CTOTAL
|
||
MOVK 3,A9
|
||
MOVE A9,@TARGET_NUM ;FIRST TARGET FOR SCROLL
|
||
CLR A9 ;A9=0 FOR UP, 1 FOR RGT
|
||
CREATE ARWPID,ONARRW ;TURN ON UP ARROW
|
||
SLEEP 120
|
||
MOVE @WORLDTLY,A9,L
|
||
SRL 16,A9
|
||
ADDI 130,A9 ;A9=Y TARGET LINE TO TRIGGER SCROLL
|
||
CLR A8 ;A8=0 MEANS NOT CHECKING FOR X TARGET
|
||
CLR A10
|
||
CREATE TARGPID,TARGET
|
||
CREATE0 SHIFTLM
|
||
SLEEP 65
|
||
MOVK 8,A0
|
||
MOVE A0,@ARWOFF ;BLINK ARROW A0 MORE TIMES THEN KILL!
|
||
CREATE FUTRPID,CKFORY
|
||
DIE
|
||
|
||
FADE_STRT
|
||
;USED FOR SECRET PATH
|
||
;AND FOR INSTANT WARPS
|
||
;A9=PLYR IMG PTR WHO GOT ME FOR SMART BOMB
|
||
;A11=AUTOPAL LIST TO FADE
|
||
MOVI RNG2PID,A0
|
||
CALLR STPC
|
||
MOVI RNG1PID,A0
|
||
CALLR STPC
|
||
CALLR KILPROCS
|
||
CREATE0 SBOMB
|
||
SLEEPK 2
|
||
CALLR KILPROCS
|
||
CLR A1
|
||
MOVE A1,@CYCLIFE
|
||
MOVE A1,@P1CTRL
|
||
MOVE A1,@P2CTRL
|
||
MOVI CYCPID,A0
|
||
CALLA KIL1C
|
||
MOVI POWPID,A0
|
||
CALLA KIL1C
|
||
|
||
CALLA CLNPAL
|
||
;FADE AUTOPAL
|
||
MOVE A11,A0
|
||
MOVK 2,A1
|
||
CALLA FADEOUT
|
||
|
||
MOVI PALBNO,A0
|
||
CALLA FB_FADEOUT
|
||
|
||
SLEEP 60
|
||
|
||
CALLA KILBGND
|
||
|
||
SLEEPK 2
|
||
CALLA CLNPAL
|
||
|
||
CALLA RESTUFF_AUTOERASE
|
||
|
||
MOVE @WAVE,A0
|
||
SUBK 32,A0
|
||
JRNZ NOTEND
|
||
;SHOCK FIX
|
||
SLEEP 0D0H-60 ;READ MESSAGE
|
||
NOTEND CALLR KILNOTME
|
||
CLR A0
|
||
MOVE A0,@INEXP ;I MAY HAVE KILLED TIME BOMBS
|
||
MOVI PCINFO,A1
|
||
MOVE A1,@LASTPC,L
|
||
MOVE A0,*A1,L
|
||
RETP
|
||
KILPROCS
|
||
MOVI CMAN,A0
|
||
CLR A1
|
||
NOT A1
|
||
MOVE A1,@HALT
|
||
CALLA KILALL ;KILL ALL CRATES
|
||
MOVI BMBPID,A0
|
||
CALLA KILALL
|
||
MOVI MAPPID,A0
|
||
CALLA KILALL
|
||
MOVI T72PID,A0
|
||
CALLA KILALL
|
||
MOVI LORDPID,A0
|
||
CALLA KILALL
|
||
MOVI SHOTPID,A0
|
||
CALLA KILALL
|
||
MOVI JOYPID,A0
|
||
CALLA KILALL
|
||
MOVI ICONPID,A0
|
||
CALLA KILALL
|
||
MOVI BULPID,A0
|
||
CALLA KILALL
|
||
MOVI BLOWPID,A0
|
||
CALLA KILALL
|
||
MOVI HSTGPID,A0
|
||
CALLA KILALL
|
||
MOVI DROPPID,A0
|
||
CALLA KILALL
|
||
MOVI FUTUREPID,A0 ;FUTURE PROCS LIKE SHIFTING MINES
|
||
CALLA KILALL
|
||
MOVI WARPPID,A0
|
||
CALLA KILALL
|
||
MOVI T72PID,A0
|
||
CALLA KILALL
|
||
MOVI FLGPID,A0 ;7/29
|
||
CALLA KILALL
|
||
MOVI shawnpid,A0 ;7/29
|
||
CALLA KILALL
|
||
MOVI PONDPID,A0 ;9/22
|
||
CALLA KILALL
|
||
MOVI JEEPID,A0 ;9/26
|
||
CALLA KILALL
|
||
MOVI BOSSPID,A0 ;9/26
|
||
CALLA KILALL
|
||
MOVI NEUTPID,A0 ;11/25
|
||
CALLA KILALL
|
||
RETS
|
||
STPC
|
||
;STOP FLASHING COLOR CYCLE UPON ENTRY INTO WARPS
|
||
MMTM SP,A8,A9,A10,A11
|
||
CLR A1
|
||
NOT A1
|
||
CALLA EXISTP
|
||
JRZ NOCY
|
||
CALLA GETA9
|
||
CALLA GETA8
|
||
CALLA GETA10
|
||
CALLA GETA11
|
||
CLR A1
|
||
MOVE A1,*A0(PDATA),W ;ZERO TEMP FIELD
|
||
MOVI XOUT0,A7
|
||
CALLA XFERPROC
|
||
NOCY
|
||
MMFM SP,A8,A9,A10,A11
|
||
RETS
|
||
DO5
|
||
MOVK 5,A0
|
||
CALLA DOLORD
|
||
MOVI SRECT1,A0
|
||
MOVE A0,@CURRENT,L
|
||
MOVI BSRECT1,A0
|
||
MOVE A0,@BCURRENT,L
|
||
MOVI ENRECT5,A0
|
||
MOVE A0,@EN_CURRENT,L ;FOR BOX COLLISIONS
|
||
MOVI ERECT5,A0
|
||
MOVE A0,@ENEMY_RECT,L ;FOR SPAWNING
|
||
MOVI PATH_MOD,A0 ;SHOW SECRET PATH MODULE
|
||
MOVE A0,@BAKMODS,L
|
||
CALLA BGND_UD1
|
||
RETS
|
||
XX .EQU 241
|
||
YY .EQU 202
|
||
SRECT1 .WORD 242-XX,1613-YY,283-XX,2380+350-YY ;SECRET PATH RECT LIST 1
|
||
.WORD 274-XX,2195+350-YY,367-XX,2277+350-YY
|
||
.WORD 594-XX,2202-YY,638-XX,2290+337-YY
|
||
.WORD 500-XX,1974+350-YY,608-XX,2122+350-YY
|
||
.WORD 260-XX,0584H,06CH,1685-YY
|
||
.WORD 531-XX,0584H,643-XX,1685-YY
|
||
.WORD 531-XX,063AH,643-XX,1982-YY
|
||
.WORD 0
|
||
BSRECT1 .WORD 242-XX,1613-YY,270-XX,2375+350-YY ;BULLET RECT FOR SECRET #1
|
||
.WORD 274-XX,2199+350-YY,360-XX,2265+350-YY
|
||
.WORD 605-XX,2202-YY,638-XX,2280+337-YY
|
||
.WORD 515-XX,1984+350-YY,608-XX,2105+350-YY
|
||
.WORD 260-XX,056CH,336-XX,05BCH
|
||
.WORD 012AH,056CH,640-XX,1673-YY
|
||
.WORD 012AH,1824-YY,643-XX,06E6H
|
||
.WORD 0
|
||
|
||
PALBNO .LONG SCOREPAL,0
|
||
PALCNO .LONG 8*32*32+5*32+4,0
|
||
PALENO .LONG 3*32*32+4*32+5,0
|
||
PALB:
|
||
.LONG 11*32*32+7*32+0,0
|
||
|
||
PATH_MOD:
|
||
.LONG SEC1BMOD ;THIS IS FROM BLIMP (MODULE NAME)
|
||
.WORD 0FFD8H-5,0 ;-1950 ;x,y start pos.
|
||
.LONG >FFFFFFFF
|
||
SETXY
|
||
;A8=1 OR 2
|
||
;RUNIN RIGHT FROM SIDE
|
||
MOVE @WORLDTLX,A3,L ;Y LINE TO REAPPEAR AT
|
||
ADDI [408,0],A3
|
||
CMPI 1,A8
|
||
JRNE VX1R
|
||
;THIS IS FOR BRINGING THE PLAYER ON FROM OFF LEFT OF SCREEN
|
||
MOVE @WORLDTLY,A2,L
|
||
ADDI [0195,0],A2
|
||
MOVE @PLYRPRCS,A0,L
|
||
JRUC AXZ
|
||
VX1R
|
||
MOVE @WORLDTLY,A2,L
|
||
ADDI [0210,0],A2
|
||
MOVE @PLYRPRCS+32,A0,L
|
||
AXZ
|
||
MOVE *A0(TSO_PTR),A8,L
|
||
MOVE *A0(LEG_PTR),A0,L
|
||
MOVE A3,*A0(OXVAL),L
|
||
MOVE A2,*A0(OYVAL),L
|
||
|
||
;REALIGN PLAYER HALVES WHEN WE RESET
|
||
MOVE A8,A0
|
||
MOVE *A13(LEG_PTR),A8,L ;GET LEG PTR OUT OF TORSO STRUCT
|
||
CALLA GETANIXY
|
||
MOVE *A8(OFLAGS),A4,W
|
||
ORI M_NOCOLL,A4
|
||
CALLA GANISAG
|
||
MOVE A0,A8
|
||
RETS
|
||
|
||
KILNOTME:
|
||
MMTM SP,A0,A2,A3,A4,A5
|
||
MOVI OBJLST,A2,L
|
||
KILOBP:
|
||
MOVE A2,A3 ;SAVE PREVIOUS
|
||
MOVE *A2,A2,L ;GET NEXT
|
||
JREQ KILOBX ;ALL DONE
|
||
MOVE *A2(OID),A4
|
||
BTST 14,A4
|
||
JRZ CONTK ;A CLSPLYR
|
||
;KILL EVERYTHING BUT PLAYERS
|
||
ANDI F_TYPE,A4
|
||
CMPI TYPHLPR,A4 ;A HELPER BLADE
|
||
JRNZ NEXCK
|
||
MOVE *A2(OIMG),A0,L
|
||
CMPI BLADE,A0
|
||
JRZ KILOBP
|
||
CMPI SHLD1,A0
|
||
JRZ KILOBP
|
||
CMPI SHLD2,A0
|
||
JRZ KILOBP
|
||
CMPI MEP1,A0
|
||
JRZ KILOBP
|
||
CMPI MEP2,A0
|
||
JRZ KILOBP
|
||
NEXCK CMPI TYPPLYR,A4
|
||
JRZ KILOBP
|
||
CONTK
|
||
|
||
MOVE *A2,*A3,L ;LINK AROUND IN ACTIVE LIST
|
||
MOVE @OFREE,A5,L ;LINK INTO FREE LIST AT START
|
||
MOVE A5,*A2,L
|
||
MOVE A2,@OFREE,L ;POINT FREE TO CELL
|
||
MOVE A3,A2
|
||
JRUC KILOBP ;KILL THE REST
|
||
KILOBX:
|
||
MMFM SP,A0,A2,A3,A4,A5
|
||
RETS
|
||
CKIT
|
||
;A9=SECRET #
|
||
MOVE A9,A2
|
||
SLL 5,A2
|
||
ADDI AREA,A2
|
||
MOVE *A2,A2,L
|
||
CLR A3
|
||
MOVY A2,A3
|
||
SRL 16,A3
|
||
ANDI 0FFFFH,A2
|
||
MOVE *A0(OXPOS),A1
|
||
SUB A3,A1
|
||
ABS A1
|
||
CMPI 15,A1
|
||
JRNC CKO
|
||
MOVE *A0(OYPOS),A1
|
||
SUB A2,A1
|
||
ABS A1
|
||
CMPI 15,A1
|
||
JRNC CKO
|
||
SETC
|
||
CKO RETS
|
||
|
||
AREA .LONG [01FH,050H]
|
||
|
||
SHSTG
|
||
;SEND GROUP OF HOSTAGES DOWN AT PLAYER FROM ELEVATOR
|
||
MOVK 2,A8
|
||
CREATE0 LHLPS
|
||
SEND1
|
||
SLEEPK >15
|
||
MOVE @WORLDTLY,A0,L
|
||
ADDI [35,0],A0
|
||
MOVE @WORLDTLX,A9,L
|
||
SRL 16,A9
|
||
ADDI 185,A9
|
||
MOVY A0,A9
|
||
CALLA SENDH_GROUP
|
||
DSJ A8,SEND1
|
||
DIE
|
||
BAMS movk 7,a10
|
||
bnes1 movi BAMSND,a9
|
||
movk 10,a0 ;7
|
||
CALLA RNDRNG0
|
||
addk 3,a0
|
||
btst 0,a0
|
||
jrz bnes2
|
||
movi BAMSND2,a9
|
||
bnes2 calla PRCSLP
|
||
move a9,a0
|
||
calla ONESND
|
||
dsj a10,bnes1
|
||
SLEEP 90
|
||
DIE
|
||
GLUCK .WORD >F1F7,>40,>80E5,0 ;"GOOD LUCK"
|
||
BAMSND .WORD >F3EE,>1,>8081,0 ;BOOM
|
||
BAMSND2 .WORD >F3EE,>1,>8082,0 ;BOOM2
|
||
GATE_EXP:
|
||
;EXPLODE ENTIRE GATE
|
||
;CHANGE GATE IMAGES TO BLOWN UP GATE IMAGES
|
||
;DELETE BACKGROUND BLOCKS WITH ZPOS OF 0AH
|
||
;A9=1 OR 2 OF PLAYER WHO KILLED GATE
|
||
MOVE @TARGET_NUM,A0
|
||
JRZ GAG
|
||
;ELEVATOR DOORS
|
||
;CHECK FOR PROPER WAVE HERE. DO NOT BLOW DOOR IF NOT CORRECT!
|
||
MOVE @HULK_DN,A1
|
||
JRZ GAG2
|
||
;HULK WAVE DONE
|
||
;CHECK FOR SCROLL
|
||
PUSH A0
|
||
CLR A1
|
||
NOT A1
|
||
MOVI TARGPID,A0
|
||
CALLA EXISTP
|
||
JRZ GAGOK
|
||
PULL A0
|
||
DIE
|
||
GAGOK PULL A0
|
||
;NOT SCROLLING
|
||
CMPI 2,A0
|
||
JRNZ GE1
|
||
CREATE0 DOZU
|
||
JRUC GEO
|
||
GE1 CMPI 3,A0
|
||
JRNZ GEO
|
||
CREATE0 DOZU2
|
||
GEO CREATE0 SHSTG
|
||
JRUC GAG3
|
||
DOZU SLEEP 150
|
||
;NEAR FIRST ELEVATOR
|
||
MOVE @TMP,A0
|
||
JANZ SUCIDE
|
||
MOVK 4,A10
|
||
MOVE A10,@TMP
|
||
|
||
MOVI [20,0],A9 ;Y ADD IN VALUE
|
||
CREATE0 ZONE_TXT2 ;AWESOME, GO KILL DOWNSTAIRS
|
||
GO_DOWN
|
||
SLEEP 190H-120
|
||
|
||
;CHECK FOR PLAYERS UP INTO ELEVATOR
|
||
MOVK 1,A0
|
||
MOVE A0,@ICONS_DN
|
||
CREATE NEUT2PID,DO_NEUTS
|
||
|
||
ELVCK SLEEPK 1
|
||
MOVE @WORLDTLY+16,A2
|
||
ADDI 45,A2
|
||
MOVE @PLYROBJS,A0,L
|
||
JRZ CKNX
|
||
MOVE *A0(OYPOS),A1
|
||
JRN CKNX
|
||
CMP A1,A2
|
||
JRC ELVCK
|
||
CKNX MOVE @PLYROBJS+32,A0,L
|
||
JRZ AHITV
|
||
MOVE *A0(OYPOS),A1
|
||
JRN AHITV
|
||
CMP A1,A2
|
||
JRC ELVCK
|
||
AHITV
|
||
;SMART BOMB SCREEN
|
||
;TURN OFF ALL BARRELS/CRATE PROCESSES
|
||
;WIPE TO NEW MODULE
|
||
;HAVE PLAYERS RUN OUT ONTO NEW SCREEN
|
||
;WHAT IF CRUISE MISSILIES ARE COMING DURING SECRET PATH ENTER?
|
||
MOVE A0,A9
|
||
;A9=PLYR IMG PTR WHO GOT ME FOR SMART BOMB
|
||
MOVI TARGPID,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA KILALL
|
||
MOVI DELPID,A0
|
||
CALLA KILALL
|
||
MOVI NEUT2PID,A0
|
||
CALLA KIL1C
|
||
movi BOMBNPID,a0
|
||
calla KIL1C
|
||
|
||
MOVI WRPSND,A0
|
||
CALLA ONESNDOVR
|
||
|
||
MOVI PALB,A11
|
||
JSRP FADE_STRT
|
||
|
||
; movi ->1004,a0 ;Hide screen
|
||
; move a0,@DPYSTRT
|
||
|
||
SLEEPK 2
|
||
;KILL EVERYTHING BUT PLAYER STUFF
|
||
;SHOW NEW BLIMP MODULE
|
||
CALLA KILBGND
|
||
SLEEPK 2
|
||
movi NEUT2PID,a0 ;ONGOING NEUTRONS!
|
||
CALLA KIL1C
|
||
.REF STRT_UNDER
|
||
MOVK 1,A10
|
||
JSRP STRT_UNDER
|
||
SLEEPK 2
|
||
CLR A1
|
||
MOVE A1,@DISPLAYON
|
||
|
||
CALLA BGND_UD1
|
||
|
||
MOVI UPAL,a0
|
||
CALLA BLAKOUT
|
||
MOVI UFLP,a0
|
||
CALLA BLAKOUT
|
||
MOVI JEEPP,a0
|
||
CALLA BLAKOUT
|
||
MOVI CANDB,a0
|
||
CALLA BLAKOUT
|
||
MOVI STUFFP,a0
|
||
CALLA BLAKOUT
|
||
MOVI FRTCLS,a0
|
||
CALLA BLAKOUT
|
||
MOVI DUXPAL,a0
|
||
CALLA BLAKOUT
|
||
|
||
MOVI PALENO,A0
|
||
MOVK 2,A1
|
||
CALLA FADEIN
|
||
MOVI PALBNO,A0
|
||
CALLA FB_FADEIN
|
||
|
||
SLEEPK 2
|
||
|
||
MOVK 1,A1
|
||
MOVE A1,@DISPLAYON
|
||
|
||
CALLA BGND_UD1
|
||
|
||
|
||
; movi -4,a0 ;Show screen
|
||
; move a0,@DPYSTRT
|
||
|
||
CLR A0
|
||
MOVE A0,@HALT
|
||
SLEEP 50
|
||
|
||
MOVK 3,A0
|
||
MOVE A0,@RUNIN,W ;FROM TOP
|
||
|
||
MOVE @STATUS,A9
|
||
BTST 0,A9
|
||
JRZ NEXT1
|
||
MOVE @PLYRPRCS,A0,L
|
||
MOVE *A0(TSO_PTR),A1,L
|
||
MOVE *A0(LEG_PTR),A0,L
|
||
MOVE @WORLDTLY,A2,L
|
||
SUBI [20,0],A2
|
||
MOVE A2,*A1(OYVAL),L
|
||
MOVE A2,*A0(OYVAL),L
|
||
MOVE @WORLDTLX,A2,L
|
||
ADDI [190,0],A2
|
||
MOVE A2,*A1(OXVAL),L
|
||
MOVE A2,*A0(OXVAL),L
|
||
|
||
MOVK 1,A8
|
||
MOVE @RUNIN,A10 ;A10=0 FOR COME IN FROM BOTTOM
|
||
CREATE SCRPID,SCRIPTPLAY
|
||
NEXT1 BTST 1,A9
|
||
JRZ NEXT2
|
||
MOVE @PLYRPRCS+32,A0,L
|
||
MOVE *A0(TSO_PTR),A1,L
|
||
MOVE *A0(LEG_PTR),A0,L
|
||
MOVE @WORLDTLY,A2,L
|
||
SUBI [20,0],A2
|
||
MOVE A2,*A1(OYVAL),L
|
||
MOVE A2,*A0(OYVAL),L
|
||
MOVE @WORLDTLX,A2,L
|
||
ADDI [210,0],A2
|
||
MOVE A2,*A1(OXVAL),L
|
||
MOVE A2,*A0(OXVAL),L
|
||
MOVK 2,A8
|
||
MOVE @RUNIN,A10 ;A10=0 FOR COME IN FROM BOTTOM
|
||
CREATE SCRPID,SCRIPTPLAY
|
||
NEXT2
|
||
|
||
CREATE JOYPID,JOY_UPDATE
|
||
;FADE IN COMPLETE
|
||
MOVI ICN1,A0 ;ICN3
|
||
MOVE A0,@ICLIST,L
|
||
CREATE ICONPID,SEND_ICON
|
||
SLEEPK 30
|
||
clr a0
|
||
move a0,@RUNIN
|
||
CALLA SETC2 ;LAND MINE CYCLE
|
||
DIE
|
||
|
||
;MESSAGE SAYING THANKS FOR PLAYING THIS TEST OF T.C.
|
||
; move @PLYROBJS+32,a2,L
|
||
; move @PLYROBJS,a9,L
|
||
; jrz bsn750
|
||
; move a2,a2
|
||
; jrz bsn760
|
||
; movk 1,a0 ;>Give random player the smartbomb pts
|
||
; callr rnd
|
||
; jrz bsn760
|
||
;bsn750 move a2,a9
|
||
;bsn760 CREATE0 SBOMB
|
||
;
|
||
; CLR A0
|
||
; MOVE A0,@SCORE_FLAG
|
||
;
|
||
; MOVI INGAMEOV,A0
|
||
; MOVE A0,@GAMSTATE,W
|
||
; SOUND1 MUSICOFF ;MUSIC HARD OFF
|
||
; CLR A0
|
||
; CLR A1
|
||
; NOT A1
|
||
;
|
||
; CALLA KILALL ;KILL ALL GAME PROCESSES
|
||
;
|
||
; MOVK 1,A0
|
||
; MOVE A0,@HALT
|
||
; .REF CYCSPECT,RD15FONT,WRLD,STRCNRMO,MUSICOFF
|
||
;
|
||
;
|
||
;
|
||
;; SLEEP 90
|
||
;
|
||
;
|
||
; .REF WIPEOUT
|
||
; CALLA WIPEOUT
|
||
; CREATE COLRPID,CYCSPECT ;START COLOR CYCLE PROCESS
|
||
;
|
||
; movi DISSND,a0 ;DO DISARM SOUND IF NOT BLOWING
|
||
; calla ONESND
|
||
;
|
||
; MOVI RD15FONT,A11 ;FONT TABLE
|
||
; CLR A0
|
||
; MOVE A0,@WRLD
|
||
; MOVK 2,A10 ;Y,X SPACING BETWEEN CHARCTERS
|
||
; CLR A0
|
||
;
|
||
; MOVI 3E3EH,A6 ;COLOR CYCLE DIGITS
|
||
; MOVI [55-5,0200],A9 ;SCRN Y/X
|
||
; MOVI LINE1,A8
|
||
; JSRP STRCNRMO
|
||
;
|
||
; MOVI 3E3EH,A6 ;COLOR CYCLE DIGITS
|
||
; MOVI [75-5,0200],A9 ;SCRN Y/X
|
||
; MOVI LINE2,A8
|
||
; JSRP STRCNRMO
|
||
;
|
||
; MOVI 3E3EH,A6 ;COLOR CYCLE DIGITS
|
||
; MOVI [95-5,0200],A9 ;SCRN Y/X
|
||
; MOVI LINE3,A8
|
||
; JSRP STRCNRMO
|
||
;
|
||
; MOVI 3E3EH,A6 ;COLOR CYCLE DIGITS
|
||
; MOVI [115-5,0200],A9 ;SCRN Y/X
|
||
; MOVI LINE4,A8
|
||
; JSRP STRCNRMO
|
||
;
|
||
; MOVI 3E3EH,A6 ;COLOR CYCLE DIGITS
|
||
; MOVI [135-5,0200],A9 ;SCRN Y/X
|
||
; MOVI LINE5,A8
|
||
; JSRP STRCNRMO
|
||
;
|
||
; MOVI 3E3EH,A6 ;COLOR CYCLE DIGITS
|
||
; MOVI [155-5,0200],A9 ;SCRN Y/X
|
||
; MOVI LINE6,A8
|
||
; JSRP STRCNRMO
|
||
;
|
||
;
|
||
; SLEEP 10*60
|
||
;
|
||
; MOVI CLSNEUT|TYPTEXT|SUBTXT,A0
|
||
; CLR A1
|
||
; NOT A1
|
||
; CALLA KILOBJ
|
||
;
|
||
;
|
||
; MOVI INGAMEOV,A0
|
||
; MOVE A0,@GAMSTATE,W
|
||
; SOUND1 MUSICOFF ;MUSIC HARD OFF
|
||
; CLR A0
|
||
; CLR A1
|
||
; NOT A1
|
||
;
|
||
; CALLA KILALL ;KILL ALL GAME PROCESSES
|
||
; JSRP WNDWON
|
||
; .REF GAMEOVER,GAMSTATE
|
||
; CREATE GMEOVPID,GAMEOVER ;GAME IS NOW OFFICIALLY OVER
|
||
; DIE
|
||
;********************************
|
||
;* Get random # with mask
|
||
;* Preserves Regs 2-13
|
||
;
|
||
;rnd ;A0=Mask, A1/B0=Trashed!
|
||
;
|
||
; move @RAND,a1,L
|
||
; rl a1,a1
|
||
; move @HCOUNT,a14
|
||
; rl a14,a1
|
||
; add sp,a1
|
||
; move a1,@RAND,L
|
||
;
|
||
; and a1,a0 ;A0=Rnd #
|
||
; rets ;Pass CC
|
||
;DISSND .WORD >F3EE,>18,>80B0,0 ;KEY MELODY TYPE SND
|
||
;
|
||
;LINE1 .BYTE "YOU HAVE COMPLETED",0
|
||
;LINE2 .BYTE "THIS TEST OF TOTAL CARNAGE.",0
|
||
;LINE3 .BYTE "THE COMPLETE GAME ARRIVES",0
|
||
;LINE4 .BYTE "IN ONE WEEK. STAY TUNED!",0
|
||
;LINE5 .BYTE "THANK YOU FOR PLAYING.",0
|
||
;LINE6 .BYTE "CODE= ORCS",0
|
||
; .EVEN
|
||
;
|
||
;
|
||
|
||
DOZU2 SLEEP 150
|
||
;NEAR SECRET ELEVATOR
|
||
MOVK 3,A10
|
||
MOVI [20,0],A9
|
||
CREATE0 ZONE_TXT2 ;TRY THESE PASSWORDS
|
||
JRUC GO_DOWN
|
||
GAG2 DIE
|
||
GAG MOVI LORDPID,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA KILALL
|
||
|
||
GAG3 MOVI DROPPID,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA EXISTP
|
||
JRZ SKIP
|
||
;FOUND
|
||
CALLA GETA8 ;GET RID OF TEXT MESSAGE "DROP IT"
|
||
MOVI DOUT,A7
|
||
CLR A1
|
||
CALLA XFERPROC
|
||
SKIP
|
||
MOVI P1DATA,A2
|
||
CMPI 1,A9
|
||
JRZ PAP
|
||
MOVI P2DATA,A2
|
||
PAP MOVI GATEPT,A1
|
||
CALLA SCRADD2
|
||
|
||
CREATE0 BAMS
|
||
|
||
MOVK 2,A0
|
||
MOVE A0,@ARWOFF ;BLINK ARROW A0 MORE TIMES THEN KILL!
|
||
MOVE @TARGET_NUM,A10
|
||
MOVI CLSENMY|TYPGATE,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA EXISTOBJ
|
||
JRZ WHAT2
|
||
CLR A1
|
||
MOVE A1,*A0(OID),W
|
||
MOVE *A0(OFLAGS),A1
|
||
ORI M_NOCOLL,A1
|
||
MOVE A1,*A0(OFLAGS)
|
||
;A0=A GATE PNTR WHICH MUST EXPLODE
|
||
MOVE A0,A8
|
||
CREATE0 DO_GATE_EXP1
|
||
MOVI CLSENMY|TYPGATE,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA EXISTOBJ
|
||
JRZ WHAT2
|
||
CLR A1
|
||
MOVE A1,*A0(OID),W
|
||
MOVE *A0(OFLAGS),A1
|
||
ORI M_NOCOLL,A1
|
||
MOVE A1,*A0(OFLAGS)
|
||
MOVE A0,A8
|
||
CREATE0 DO_GATE_EXP1
|
||
SLEEPK 20 ;20
|
||
CALLR DELZ10
|
||
|
||
|
||
MOVE @WAVE,A0
|
||
CMPI 18,A0
|
||
JRNZ WHAT2
|
||
;NEW RECT RIGHT NOW!
|
||
MOVI AIRRECT1A,A0
|
||
MOVE A0,@CURRENT,L
|
||
|
||
WHAT2 SLEEPK 1
|
||
MOVI TARGPID,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA EXISTP
|
||
JRNZ WHAT2
|
||
|
||
MOVE @WAVE,A0
|
||
CMPI 18,A0
|
||
JRNZ ASDI
|
||
;INTO AIRPORT
|
||
movk AUDAIRPORT,a0
|
||
calla aud_addnumplyrs
|
||
MOVI 010000H,A0
|
||
MOVE A0,@HZSPD,L
|
||
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 PATHU2,A10 ;INDICATES NEW SCROLL WITH SCRL TABLE
|
||
CREATE TARGPID,TARGET
|
||
|
||
MOVI GLUCK,A0
|
||
CALLA ONESND
|
||
|
||
CLR A9 ;A9=0 FOR UP, 1 FOR RGT
|
||
CREATE ARWPID,ONARRW ;TURN ON UP ARROW
|
||
CLR A0
|
||
MOVE A0,@TARGET_NUM
|
||
; MOVI AIRRECT1A,A0
|
||
; MOVE A0,@CURRENT,L
|
||
MOVK 13,A0
|
||
MOVE A0,@CTOTAL,W ;18 FOR REACTOR, 11 FOR DISH
|
||
FIX SLEEP 54
|
||
MOVK 10,A0
|
||
MOVE A0,@ARWOFF
|
||
DIE
|
||
AIRRECT1A ;ENTERING AIRPORT AFTER GATE BLOWS
|
||
.WORD 0C80H,12B5H,0D0AH,1306H
|
||
.WORD 0D74H,12B5H,0E08H,1306H
|
||
;TOP AREA
|
||
.WORD 0C58H,0FEFH,0CB8H,106DH
|
||
.WORD 0C7CH,0FECH,0D30H,1044H
|
||
.WORD 0D8CH,0FECH,0EC5H,1044H
|
||
.WORD 0C58H,10E5H,0CBCH,1118H
|
||
.WORD 0
|
||
AIRRECT2A ;1ST LOCK DOWN IN AIRPORT
|
||
.WORD 0C58H,0FEFH,0CB8H,106DH
|
||
.WORD 0C7CH,0FECH,0D30H,1044H
|
||
.WORD 0D8CH,0FECH,0E85H,1044H ;EC5
|
||
.WORD 0C58H,10E5H,0CBCH,1118H
|
||
.WORD 0
|
||
AIRBRECT2 ;1ST LOCK DOWN IN AIRPORT FOR BULLETS
|
||
.WORD 0C58H,0FEFH,0CB0H,1060H
|
||
.WORD 0C7CH,0FECH,0D28H,1037H
|
||
.WORD 0D8CH,0FECH,0E85H,1037H ;EC5
|
||
.WORD 0C58H,10D4H,0CB0H,110CH
|
||
.WORD 0
|
||
PATHU2 ;DIR,CNT
|
||
.WORD 1,249H,0
|
||
ASDI MOVE @WAVE,A0
|
||
CMPI 1,A0
|
||
JRZ OKAY1
|
||
;
|
||
; MOVE A10,A10
|
||
; JRZ OKAY1
|
||
;READY TO GO DOWN STAIRS!
|
||
SDI DIE
|
||
DELZ10
|
||
;NOW DELETE SHADOW FROM BAKLST
|
||
MOVI BAKLST,A2,L
|
||
MOVK 10,A0
|
||
MOVI RAMLST,A4
|
||
CLR A5
|
||
MOVE A5,*A4,L
|
||
EXISTOBP:
|
||
MOVE *A2,A2,L ;GET NEXT
|
||
JREQ EXISTOBX ;ALL DONE
|
||
MOVE *A2(OZPOS),A3
|
||
CMP A0,A3 ;MATCH?
|
||
JRNE EXISTOBP ;NO
|
||
MOVE A2,*A4+,L
|
||
MOVE A5,*A4,L
|
||
JRUC EXISTOBP
|
||
EXISTOBX:
|
||
MOVI RAMLST,A4
|
||
DELP
|
||
MOVE *A4+,A0,L
|
||
JRZ DELZX
|
||
CALLA DELBOBJ
|
||
JRUC DELP
|
||
DELZX RETS
|
||
|
||
OKAY1
|
||
MOVK 2,A0
|
||
MOVE A0,@WAVE
|
||
SLEEP 60
|
||
;PLAYER THRU FORT GATES
|
||
;CAN START NEW TARGET PROC
|
||
MOVK 1,A0
|
||
MOVE A0,@TARGET_NUM ;NEXT TARGET NUMBER FOR SCROLL
|
||
MOVE @WORLDTLY,A9,L
|
||
SRL 16,A9
|
||
ADDI 160,A9 ;80 ;A9=Y TARGET LINE TO TRIGGER SCROLL
|
||
CLR A8 ;A8=0 MEANS NOT CHECKING FOR X TARGET
|
||
CLR A10
|
||
CREATE TARGPID,TARGET
|
||
SLEEP 90
|
||
CLR A9 ;A9=0 FOR UP, 1 FOR RGT
|
||
CREATE ARWPID,ONARRW ;TURN ON UP ARROW
|
||
SLEEP 53
|
||
MOVK 15,A0
|
||
MOVE A0,@ARWOFF ;BLINK ARROW X MORE TIMES THEN KILL!
|
||
DIE
|
||
|
||
START_EXP:
|
||
; MOVK 2,A5 ;3
|
||
LPIT0
|
||
MOVK 3,A10 ;SLEEP THIS LONG BEFORE BLOWING
|
||
CREATE SHOTPID,EXPTBMB
|
||
MOVK 8,A10 ;SLEEP THIS LONG BEFORE BLOWING
|
||
CREATE SHOTPID,EXPTBMB
|
||
MOVK 14,A10 ;SLEEP THIS LONG BEFORE BLOWING
|
||
CREATE SHOTPID,EXPTBMB
|
||
MOVK 2,A10 ;SLEEP THIS LONG BEFORE BLOWING
|
||
CREATE SHOTPID,EXPTBMB
|
||
; DSJ A5,LPIT0
|
||
RETS
|
||
DO_GATE_EXP1:
|
||
CREATE SHOTPID,GATE_EXP1
|
||
CREATE SHOTPID,GATE_EXP_BIG
|
||
SLEEPK 1CH
|
||
CREATE SHOTPID,GATE_EXP1
|
||
SLEEPK 1CH
|
||
CREATE SHOTPID,GATE_EXP1
|
||
DIE
|
||
GATE_EXP_BIG
|
||
SLEEPK 10
|
||
MOVK 3,A10
|
||
GB1
|
||
MOVE *A8(OXVAL),A0,L
|
||
MOVE *A8(OYVAL),A1,L
|
||
ADDI [28H,0],A1
|
||
MOVE A10,A2
|
||
SLL 5,A2
|
||
ADDI XOVER,A2
|
||
MOVE *A2,A2,L
|
||
ADD A2,A0
|
||
MOVI XPLD1,A2
|
||
MOVI 250,A3
|
||
MOVI DMAWNZ|M_NOCOLL,A4
|
||
MOVI CLSDEAD,A5 ;I DELETE MYSELF ID
|
||
CLR A6
|
||
CLR A7
|
||
CALLA BEGINOBJ2
|
||
MOVI XBOOMS,A9
|
||
CREATE SHOTPID,FRQDELDIE
|
||
DSJ A10,GB1
|
||
DIE
|
||
XOVER .LONG 0,[0,0],[30,0],[60,0]
|
||
|
||
|
||
GATE_EXP1:
|
||
;CONTINUE THIS GATES EXPLOSION
|
||
;START A SERIES OF EXPLOSIONS SURROUNDING THIS IMAGE
|
||
;A8=GATE PNTR
|
||
;A10=TARGET_NUM
|
||
PUSH A10
|
||
CLR A9
|
||
CALLR START_EXP
|
||
MOVI [20,-15],A9 ;A9=[Y,X] OFFSET
|
||
CALLR START_EXP
|
||
MOVI [20,0],A9 ;A9=[Y,X] OFFSET
|
||
CALLR START_EXP
|
||
MOVI [20,20],A9 ;A9=[Y,X] OFFSET
|
||
CALLR START_EXP
|
||
PULL A10
|
||
SLEEP 60
|
||
;ANI BROKEN GATE IN
|
||
MOVI ARPRT9,A1 ;BROKEN GATE IMAGE
|
||
MOVE @WAVE,A0
|
||
CMPI 18,A0
|
||
JRZ ST1
|
||
MOVI BROKN,A1 ;BROKEN GATE IMAGE
|
||
MOVE A10,A10
|
||
JRZ ST1
|
||
MOVI BROKN2,A1 ;BROKEN ELEVATOR DOOR IMAGE
|
||
ST1 MOVE *A8(OFLAGS),A4
|
||
CALLA ANI
|
||
DIE
|
||
|
||
EXPTBMBB:
|
||
MOVE A11,*A13(MYPLYR)
|
||
MOVI CLSPLYR|TYPBOMB,A11
|
||
MOVE A10,A0
|
||
CALLA PRCSLP
|
||
MOVI DMAWNZ,A4 ;NON-ZERO VALUE
|
||
JRUC EXPV
|
||
EXPTBMB:
|
||
;EXP TIME BOMB
|
||
;A8=TICKING BOMB IMG PNTR
|
||
;A9=[Y,X] OFFSET FROM CENTER
|
||
;A10=SLEEP TIME BEFORE EXPLOSION STARTS
|
||
MOVI CLSPLYR|TYPNEUT,A11 ;CLSNEUT
|
||
MOVE A10,A0
|
||
CALLA PRCSLP
|
||
MOVI DMAWNZ|M_NOCOLL,A4 ;NON-ZERO VALUE
|
||
|
||
EXPV CALLA GETCPNT ;A1=[Y,X]
|
||
ADD A9,A1
|
||
MOVE A9,A8
|
||
|
||
MOVI -80000H,B0
|
||
MOVI 080000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A9
|
||
MOVI -80000H,B0
|
||
MOVI 80000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A10
|
||
MOVI -014000H,B0
|
||
MOVI 014000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A6
|
||
MOVI -010000H,B0
|
||
MOVI 010000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A7
|
||
|
||
MOVE A8,A8
|
||
JRZ REGBMB
|
||
;GATE EXPLODING - MAYBE USE RED FIRE BALL
|
||
MOVI FIREEXP,A8
|
||
JRUC FRE
|
||
REGBMB
|
||
MOVI BLUEEXP,A8
|
||
FRE MOVX A1,A0
|
||
ADD A9,A1 ;A1=Y OFFSET
|
||
MOVE A8,A9
|
||
SLL 16,A0
|
||
ADD A10,A0
|
||
MOVI 292,A3 ;241 ;282
|
||
MOVE A11,A5
|
||
MOVI CLD1,A2
|
||
CALLA BEGINOBJ2
|
||
;CREATE EXPLOSION, AND THEN DIE
|
||
MOVI EXP2HI,A0
|
||
CALLA ONESND
|
||
jauc FRQDELDIE
|
||
|
||
TBOMBD2 ;AUTOMATIC BOMB DROPPER
|
||
MOVE A9,*A13(MYPLYR) ;A9=PLAYER 1 OR 2 WHO FIRED ME
|
||
MOVE A9,*A13(SHKFLG) ;DO NOT SHAKE SCRN AT EXPLODE
|
||
MOVI P1DATA,A10
|
||
DEC A9
|
||
JRZ TBO2
|
||
MOVI P2DATA,A10
|
||
JRUC TBO2
|
||
TBOMBD: ;TIME BOMB AT DEATH
|
||
MOVE A9,*A13(MYPLYR) ;A9=PLAYER 1 OR 2 WHO FIRED ME
|
||
MOVI P1DATA,A10
|
||
DEC A9
|
||
JRZ TBO
|
||
MOVI P2DATA,A10
|
||
JRUC TBO
|
||
TBOMB:
|
||
;TIME BOMB PLACEMENT/ EXPLOSION
|
||
;A9=1/2 FOR PLAYER #
|
||
MOVE A9,*A13(MYPLYR) ;A9=PLAYER 1 OR 2 WHO FIRED ME
|
||
|
||
MOVE @WAVE,A0
|
||
CMPI 38,A0
|
||
JRZ ROUT ;DOWN STAIRS NO RINGS ON BMB
|
||
CMPI 21,A0
|
||
JRZ ROUT ;DOWN STAIRS NO RINGS ON BMB
|
||
|
||
;TURN ON RINGS WHEN BOMB IS DROPPED
|
||
CMPI 1,A9
|
||
JRZ ONEP
|
||
MOVE @timerp2,a0
|
||
CMPI 350,A0
|
||
JRGE ROUT ;IF CURRENT GAME IS TOO LONG!
|
||
|
||
MOVI RNG2PID,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA EXISTP
|
||
JRNZ ROUT
|
||
MOVK 6,A10 ;TIME RINGS ARE ON
|
||
CREATE RNG2PID,RINGS ;PLACE RING AROUND PLAYER X
|
||
JRUC ROUT
|
||
ONEP
|
||
MOVE @timerp1,a0
|
||
CMPI 350,A0
|
||
JRGE ROUT ;IF CURRENT GAME IS TOO LONG!
|
||
MOVI RNG1PID,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA EXISTP
|
||
JRNZ ROUT
|
||
MOVK 6,A10 ;TIME RINGS ARE ON
|
||
CREATE RNG1PID,RINGS ;PLACE RING AROUND PLAYER X
|
||
ROUT
|
||
|
||
|
||
MOVI SETDWN,A0 ;SET DOWN SND
|
||
CALLA ONESND
|
||
MOVI P1DATA,A10
|
||
DEC A9
|
||
JRZ TB1
|
||
MOVI P2DATA,A10
|
||
TB1 MOVE *A10(BMB_CNT),A0
|
||
DEC A0
|
||
MOVE A0,*A10(BMB_CNT)
|
||
TBO CLR A0
|
||
MOVE A0,*A13(SHKFLG) ;YES SHAKE SCRN AT EXPLODE
|
||
TBO2 SLL 5,A9
|
||
ADDI PLYROBJS,A9
|
||
MOVE *A9,A8,L
|
||
MOVE *A8(OXVAL),A0,L
|
||
ADDI 0130000H,A0
|
||
MOVE *A8(OYVAL),A1,L
|
||
ADDI 0150000H,A1
|
||
CLR A9
|
||
CALLR INTARGET
|
||
MOVI DMAWNZ|M_FLIPH|M_NOCOLL,A4 ;NON-ZERO VALUE
|
||
MOVI CLSPLYR|TYPNEUT,A5 ;ID
|
||
CLR A6 ;XVEL
|
||
CLR A7 ;YVEL
|
||
MOVI DET1,A2 ;IMG
|
||
MOVE A9,A9
|
||
JRZ NOOUT
|
||
;CRUISE MISSILES CALLED IN
|
||
;PASS ALONG MYPLYR FOR POINTS!
|
||
MOVI XHAIR,A2
|
||
MOVI 69,A3 ;ZPOS
|
||
CALLA BEGINOBJ2 ;NO WORLD ADDED IN
|
||
MOVI TRGTSND,A0
|
||
CALLA ONESND
|
||
MOVE *A10(TMISLS),A0
|
||
INC A0
|
||
MOVE A0,*A10(TMISLS) ;TOTAL MISSILES USED
|
||
|
||
CMPI 2,A9 ;2=RANDOM PLACEMENT
|
||
JRNZ WATE
|
||
;RANDOM PLACEMENT
|
||
MOVE A9,@INEXP
|
||
MOVE *A8(OXPOS),A0 ;OR SATELITE DISH
|
||
MOVE *A8(OYPOS),A1
|
||
MOVI TARG1,A2
|
||
MOVE A0,*A2+,W
|
||
MOVE A1,*A2,W
|
||
MOVE @T72PNTR,A0,L
|
||
MOVE *A0(OPLINK),A1,L
|
||
MOVE *A1(PDATA+336),A2
|
||
ADDK 25,A2 ;12
|
||
MOVE A2,*A1(PDATA+336)
|
||
;HITS .EQU PDATA+336 ;UHW HITS ABSORBED
|
||
NOD MOVE *A0(OXPOS),A1
|
||
ADDI 40,A1
|
||
MOVE *A0(OYPOS),A0
|
||
ADDI 40,A0
|
||
MOVI TARG2,A2
|
||
MOVE A1,*A2+,W ;X
|
||
MOVE A0,*A2,W ;Y
|
||
|
||
MOVE *A13(MYPLYR),A11
|
||
CREATE CMAN,CRUISEA ;ONE MISSILE TO EXACTLY HIT TARGET X
|
||
;FOR RANDOM CRUISE STRIKES
|
||
MOVK 7,A9 ;18 FOR REACTOR, 11 FOR DISH
|
||
XRAGN CREATE CMAN,CRUISE
|
||
XB1 SLEEPK 13
|
||
MOVE @HALT,A0
|
||
JRNZ XB1
|
||
DSJ A9,XRAGN
|
||
SLEEP 25H ;40H
|
||
; CLR A0
|
||
MOVE A9,@INEXP
|
||
jauc DELOBJDIE
|
||
|
||
SBSND
|
||
MOVI SALTXP4,A0
|
||
MOVK 2,A1 ;REPEAT IT 3 TIMES
|
||
CALLA SNDLD ;GO DO IT
|
||
JSRP BOOMS
|
||
DIE
|
||
|
||
WATE SLEEPK 2
|
||
MOVE @INEXP,A0 ;BMBPID,A0
|
||
JRNZ WATE
|
||
;OTHER REACTOR DONE BLOWING!
|
||
MOVE *A8(OYPOS),A0
|
||
MOVE @WORLDTLY+16,A1
|
||
ADDI 255,A1
|
||
CMP A0,A1
|
||
JRC NOBLOW ;XHAIR DOWN OFF SCRN! DON'T DO THIS MISSILE ATTACK
|
||
|
||
MOVK 1,A0
|
||
MOVE A0,@INEXP
|
||
;SMART BOMB
|
||
MOVE @HULK_DN,A0
|
||
INC A0
|
||
MOVE A0,@HULK_DN
|
||
; MOVE @CTOTAL,A0
|
||
; CMPI 18,A0
|
||
; JRNZ SKPBMB
|
||
;IF REACTOR, SMART BOMB ALSO!
|
||
;DISH - NO!
|
||
MOVE @PLYROBJS,A9,L
|
||
CMPI P2DATA,A10
|
||
JRNZ P1D
|
||
MOVE @PLYROBJS+32,A9,L
|
||
P1D CREATE0 SBOMB
|
||
CREATE0 SBSND
|
||
;SKPBMB
|
||
MOVK 1,A0
|
||
MOVE A0,@CIRCL_FLG
|
||
MOVE *A13(KEEPY),A9
|
||
jrz crsskp
|
||
CREATE0 CRSKILL ;GO START THE EXPLOSION OF REACTOR
|
||
crsskp MOVE A10,A2
|
||
MOVE *A2(TBIGSTF),A0
|
||
INC A0
|
||
MOVE A0,*A2(TBIGSTF) ;TOTAL BIG STUFF DESTROYED
|
||
MOVI DISHPT,A1 ;POINTS FOR REACTOR OR DISH
|
||
CALLA SCRADD2
|
||
|
||
MOVE *A8(OXPOS),A0 ;OR SATELITE DISH
|
||
MOVE *A8(OYPOS),A1
|
||
MOVI TARG1,A2
|
||
MOVE A0,*A2+,W
|
||
MOVE A1,*A2,W
|
||
|
||
MOVI TARG2,A2
|
||
MOVE @KEEPT,A3,L
|
||
MOVE *A3(32),A0,W
|
||
MOVE *A3,A1,W
|
||
SUB A1,A0
|
||
SRL 2,A0 ;SRL 1,A0
|
||
ADD A1,A0
|
||
MOVE A0,*A2+,W
|
||
|
||
MOVE *A3(48),A0,W
|
||
MOVE *A3(16),A1,W
|
||
SUB A1,A0
|
||
SRL 1,A0
|
||
ADD A1,A0
|
||
MOVE A0,*A2,W
|
||
|
||
MOVE *A13(MYPLYR),A11
|
||
CREATE CMAN,CRUISEA ;ONE MISSILE TO EXACTLY HIT TARGET X
|
||
MOVE @CTOTAL,A9,W ;18 FOR REACTOR, 11 FOR DISH
|
||
CRAGN CREATE CMAN,CRUISE
|
||
XB2 SLEEPK 14
|
||
MOVE @HALT,A0
|
||
JRNZ XB2
|
||
; DSJ A9,CRAGN
|
||
DEC A9
|
||
JRN XB3
|
||
JRNZ CRAGN
|
||
XB3
|
||
CALLA DELOBJA8
|
||
MOVE @CTOTAL,A9
|
||
CMPI 1,A9 ;2=Akhboob face - SET IN ABOSS.ASM
|
||
JRZ CFD
|
||
CMPI 8,A9 ;8=DISH
|
||
JRZ CFD
|
||
CMPI 13,A9 ;13=JET
|
||
JRNZ CFDA
|
||
MOVE A10,A2
|
||
MOVI JETPT,A1 ;ADD THIS ON TOP OF DISHPT!
|
||
MOVE *A2(TBIGSTF),A0
|
||
INC A0
|
||
MOVE A0,*A2(TBIGSTF) ;TOTAL BIG STUFF DESTROYED
|
||
CALLA SCRADD2
|
||
JRUC CFD
|
||
CFDA SLEEP 5*60-30
|
||
CFD SLEEPK 30
|
||
MOVE @HULK_DN,A0
|
||
DEC A0
|
||
MOVE A0,@HULK_DN
|
||
NOBLOW
|
||
CLR A0
|
||
MOVE A0,@CIRCL_FLG ;SPIT UP CIRCLES IF YOU LIKE
|
||
MOVE A0,@INEXP
|
||
DIE
|
||
NOOUT
|
||
MOVI 69,A3 ;ZPOS
|
||
CALLA BEGINOBJ2 ;NO WORLD ADDED IN
|
||
MOVI BLINKLST,A9
|
||
|
||
LOOP SLEEPK 1
|
||
JSRP FRANIMQ
|
||
;IF OTHER BOMB IS EXPLODING THEN LOOP BACK!
|
||
MOVI BLINKLST2,A9
|
||
MOVE @HALT,A0
|
||
JRNZ LOOP
|
||
MOVE @INEXP,A0
|
||
JRNZ LOOP
|
||
CALLA SCRTST
|
||
JRZ BLOWME
|
||
;OFFSCRN
|
||
jauc DELOBJDIE
|
||
|
||
BLOWME MOVE A9,@INEXP
|
||
MOVI DMAWNZ,A4 ;NON-ZERO VALUE
|
||
MOVE A4,*A8(OFLAGS),W
|
||
MOVI CLSPLYR|TYPBOMB,A5 ;ID
|
||
MOVE A5,*A8(OID),W
|
||
MOVE *A13(SHKFLG),A0
|
||
JRNZ NOSHK0
|
||
MOVK 10H,A10 ;29
|
||
CALLR SHAKER
|
||
NOSHK0 MOVE *A8(OYPOS),A0
|
||
ADDK 10,A0
|
||
MOVE A0,*A8(OYPOS)
|
||
;START OTHER BLUE EXPLOSIONS
|
||
MOVK 3,A5
|
||
MOVE *A13(MYPLYR),A11
|
||
CLR A9
|
||
LPIT
|
||
MOVK 3,A10 ;SLEEP THIS LONG BEFORE BLOWING
|
||
CREATE SHOTPID,EXPTBMBB
|
||
MOVK 6,A10 ;SLEEP THIS LONG BEFORE BLOWING
|
||
CREATE SHOTPID,EXPTBMBB
|
||
MOVK 8,A10 ;SLEEP THIS LONG BEFORE BLOWING
|
||
CREATE SHOTPID,EXPTBMBB
|
||
MOVK 14,A10 ;SLEEP THIS LONG BEFORE BLOWING
|
||
CREATE SHOTPID,EXPTBMBB
|
||
MOVK 2,A10 ;SLEEP THIS LONG BEFORE BLOWING
|
||
CREATE SHOTPID,EXPTBMBB
|
||
DSJ A5,LPIT
|
||
|
||
MOVI BLUEEXP,A9
|
||
JSRP FRANIMQ
|
||
CALLA DELOBJA8
|
||
SLEEPK 10 ;0
|
||
CLR A0
|
||
MOVE A0,@INEXP
|
||
DIE
|
||
|
||
CRSKILL
|
||
;CRUISE MISSILE TO KILL THIS IMAGE
|
||
;A9=Y FOR SEARCHING
|
||
;SORT THROUGH OBJLST LOOKING FOR Y=Y IN A9
|
||
;ONCE FOUND, BASED ON IMG, GO TO DIFFERENT BLOW UP CODE
|
||
MOVI OBJLST,A8,L
|
||
CILOBP:
|
||
MOVE *A8,A8,L ;GET NEXT
|
||
JREQ KILX ;ALL DONE
|
||
MOVE *A8(OYPOS),A4
|
||
SUB A9,A4
|
||
ABS A4
|
||
SUBK 2,A4
|
||
JRHI CILOBP
|
||
; CMP A9,A4 ;MATCH?
|
||
; JRNZ CILOBP ;NO
|
||
;FOUND IMG WITH CORRECT Y VALUE
|
||
MOVE *A8(OSIZEX),A0
|
||
CMPI 104,A0 ;A REACTOR
|
||
JRZ KILRC
|
||
CMPI 050H,A0 ;A DISH
|
||
JRZ KILDS
|
||
CMPI 0F0H,A0 ;A JET
|
||
JRZ KILJET
|
||
JRUC CILOBP
|
||
KILX DIE
|
||
KILJET
|
||
MOVE *A8(OZPOS),A0
|
||
CMPI 09AH,A0
|
||
JRNZ CILOBP
|
||
;KILL JET
|
||
MOVE *A8(OPLINK),A0,L
|
||
MOVI DOSWAP,A7
|
||
CLR A1
|
||
CALLA XFERPROC ;XFER TO JET BLOW
|
||
MOVI 210,A9
|
||
CALLR DO_BONE
|
||
;CREATE EXPLOSIONS!
|
||
CREATE BLOWPID,BLOWJET
|
||
DIE
|
||
KILDS
|
||
;KILL SATELLITE DISH
|
||
MOVI 190,A9
|
||
CALLR DO_BONE
|
||
CREATE BLOWPID,BLOWDSH
|
||
DIE
|
||
KILRC
|
||
;KILL THIS REACTOR
|
||
MOVI 280,A9
|
||
CALLR DO_BONE
|
||
CREATE BLOWPID,BLOWALL
|
||
DIE
|
||
|
||
DO_BONE
|
||
MMTM SP,A10
|
||
CMPI P1DATA,A10
|
||
JRZ ZY7
|
||
MOVE @PLYRPRCS+32,A10,L
|
||
JRUC ZY8
|
||
ZY7 MOVE @PLYRPRCS,A10,L
|
||
ZY8 CREATE FUTUREPID,BONE
|
||
MMFM SP,A10
|
||
RETS
|
||
|
||
.IF DEBUG
|
||
.DEF BEACONS
|
||
BEACONS
|
||
SLEEP 60
|
||
MOVE @WAVE,A9
|
||
SLL 5,A9
|
||
ADDI TARGL,A9
|
||
MOVE *A9,A9,L
|
||
BTOP MOVE *A9,A0,W
|
||
JRZ BOU
|
||
MOVI BCN,A14
|
||
CALLA DO_ALL_STUFF
|
||
MOVE *A9+,A1,W
|
||
MOVE A1,*A0(OXPOS)
|
||
MOVE *A9+,A1,W
|
||
MOVE A1,*A0(OYPOS)
|
||
MOVI BCN,A14
|
||
CALLA DO_ALL_STUFF
|
||
MOVE *A9+,A1,W
|
||
MOVE A1,*A0(OXPOS)
|
||
MOVE *A9+,A1,W
|
||
MOVE A1,*A0(OYPOS)
|
||
ADDK 16,A9
|
||
JRUC BTOP
|
||
BOU DIE
|
||
BCN
|
||
.LONG [180H,0],[69H,0],SPDBL
|
||
.WORD 520,DMAWNZ|M_NOCOLL,CLSDEAD ;CLSNEUT
|
||
.LONG 0,0
|
||
.ENDIF
|
||
|
||
TARGL .LONG FAKE,FAKE,FAKE,REC1,FAKE,REC2,FAKE,FAKE,FAKE,FAKE,FAKE ;D1
|
||
.LONG FAKE,D1,FAKE,FAKE,D2,FAKE,FAKE,FAKE ;WAVE #'S
|
||
.LONG TESTJET,FAKE,FAKE,FAKE,FAKE,TESTJET,FAKE,FAKE,JETS3
|
||
.LONG FAKE,FAKE,TJET2,FAKE,FAKE,FAKE,FAKE,FAKE,BKWALL
|
||
.LONG FAKE,FAKE,FAKE,FAKE,FAKE,FAKE,FAKE,FAKE
|
||
.LONG FAKE,FAKE,FAKE,FAKE,FAKE,FAKE,FAKE,FAKE
|
||
.LONG FAKE,FAKE,FAKE,FAKE,FAKE,FAKE,FAKE,FAKE
|
||
.LONG FAKE,FAKE,FAKE,FAKE,FAKE,FAKE,FAKE,FAKE
|
||
FAKE .WORD 0
|
||
XX2 .EQU 241-13
|
||
YY2 .EQU 202+48H
|
||
; .WORD 626-XX,5070-YY,713-XX,5138-YY ;LEFT DISH FOR BNCING
|
||
; .WORD 617-XX2,5055-YY2,723-XX2,5153-YY2,4994+32-YY2 ;DESERT 1 AREA - LFT DISH
|
||
; .WORD 757-XX2,5005-YY2,868-XX2,5113-YY2,4951+32-YY2 ;RGT DISH
|
||
; .WORD 245+8+4-XX,4077+13+1-YY,245+95-10-XX,4160+81-10-YY ;TOP/BOT DISH FOR BULLTS
|
||
; .WORD 245+8-XX,4077+13-YY,245+95-XX,4160+81-YY ;TOP/BOT DISH FOR BNCING
|
||
;CRUISE MISSILE STRIKE RECTANGLES
|
||
JETS3
|
||
.WORD 1449+16,1956-16-45H,1449+237,1956+129-35H,1956+30H-35H ;POINTING RIGHT
|
||
.WORD 1491+16,1740-16-45H,1491+237,1740+129-35H,1740+30H-35H ;POINTING RIGHT
|
||
.WORD 1391+16,1590-16-45H,1391+237,1590+129-35H,1590+30H-35H ;POINTING RIGHT
|
||
.WORD 1098+16,1288-16-45H,1098+237,1288+129-35H,1288+30H-35H ;POINTING RIGHT
|
||
.WORD 1059+16,1140-16-45H,1059+237,1140+129-35H,1140+30H-35H ;POINTING RIGHT
|
||
.WORD 865+16,1000-16-45H,865+237,1000+129-35H,1000+30H-35H ;POINTING RIGHT
|
||
.WORD 781+16,834-16-45H,781+237,834+129-35H,834+30H-35H ;POINTING RIGHT
|
||
.WORD 816+16,682-16-45H,816+237,682+129-35H,682+30H-35H ;POINTING RIGHT
|
||
.WORD 400+16,611-16-45H,400+237,611+129-35H,611+30H-35H ;POINTING RIGHT
|
||
; 53 ALL THE WAY DOWN
|
||
.WORD 1612+15,2053+10-45H,1612+280,2053+133-35H,2053+30H-35H ;POINTING LEFT
|
||
.WORD 1684+15,1840+10-45H,1684+280,1840+133-35H,1840+30H-35H ;POINTING LEFT
|
||
.WORD 1678+15,1636+10-45H,1678+280,1636+133-35H,1636+30H-35H ;POINTING LEFT
|
||
.WORD 1590+15,1454+10-45H,1590+280,1454+133-35H,1454+30H-35H ;POINTING LEFT
|
||
.WORD 1362+15,1337+10-45H,1362+280,1337+133-35H,1337+30H-35H ;POINTING LEFT
|
||
.WORD 1336+15,1196+10-45H,1336+280,1196+133-35H,1196+30H-35H ;POINTING LEFT
|
||
.WORD 1186+15,1046+10-45H,1186+280,1046+133-35H,1046+30H-35H ;POINTING LEFT
|
||
.WORD 1036+15,896+10-45H,1036+280,896+133-35H,896+30H-35H ;POINTING LEFT
|
||
.WORD 530+15,735+10-45H,530+280,735+133-35H,735+30H-35H ;POINTING LEFT
|
||
.WORD 681+15,549+10-45H,681+280,549+133-35H,549+30H-35H ;POINTING LEFT
|
||
.WORD 512+15,426+10-45H,512+280,426+133-35H,426+30H-35H ;POINTING LEFT
|
||
.WORD 0
|
||
TESTJET
|
||
; .WORD 3189+16,5161-3,3189+237,5161+119,5161+30H ;POINTING RIGHT
|
||
; .WORD 3308+63,5057+30,3308+280,5057+123,5057+30H ;POINTING LEFT
|
||
.WORD 3768+16,4030-26,3768+237,4030+129,4030+30H ;POINTING RIGHT
|
||
.WORD 4114+16,3690-26,4114+237,3690+129,3690+30H ;POINTING RIGHT
|
||
.WORD 4497+16,3320-26,4497+237,3320+129,3320+30H ;POINTING RIGHT
|
||
.WORD 4298+16,3450-26,4298+237,3450+129,3450+30H ;POINTING RIGHT
|
||
.WORD 3901+16,3808-26,3901+237,3808+129,3808+30H ;POINTING RIGHT
|
||
; 53
|
||
.WORD 4056+15,3906+0,4056+280,3906+133,3906+30H ;POINTING LEFT
|
||
.WORD 4384+15,3575+0,4384+280,3575+133,3575+30H ;POINTING LEFT
|
||
.WORD 4645+15,3455+0,4645+280,3455+133,3455+30H ;POINTING LEFT
|
||
.WORD 4287+15,3796+0,4287+280,3796+133,3796+30H ;POINTING LEFT
|
||
.WORD 0
|
||
TJET2
|
||
.WORD 5405+15,2583+0,5405+280,2583+133,2583+30H ;POINTING LEFT
|
||
.WORD 0
|
||
D1
|
||
;LFT SIDE DISH TOP ;SPECIAL CASE -20
|
||
; .WORD 245+8-XX,4077+13-YY,245+95-XX,4160+81-YY ;TOP/BOT DISH TOGETHER
|
||
.WORD 245-10-XX2,4077-15-YY2,245+115-XX2,4077+106-20-YY2,4077-YY2-1EH
|
||
;LFT SIDE DISH BOTM
|
||
.WORD 245-10-XX2,4160-15-YY2,245+115-XX2,4160+106-YY2,4160-YY2-1EH
|
||
.WORD 0
|
||
D2
|
||
;LFT SIDE DISH BOTM
|
||
.WORD 245-10-XX2,2110-15+60H-YY2,245+115-XX2,2110+106+60H-YY2,076CH
|
||
.WORD 2B8H,5DAH,324H,5DAH+95,5C4H ;RGT DISHES
|
||
.WORD 2B8H,5DAH+97,324H,6A0H,61CH ;RGT DISHES
|
||
.WORD 0
|
||
|
||
REC1 .WORD 268-XX,312-YY-18,370-XX+15,397-YY+10,260-YY ;FIRST REACTOR
|
||
.WORD 0
|
||
REC2 .WORD 274-XX,2195+335-YY,377-XX,2277+365+16-YY,2494-YY ;LFT REACTOR
|
||
.WORD 490-XX,1974+340-YY,608-XX+180,2397-YY,2269-YY ;RGT HI
|
||
.WORD 490-XX,2400-YY,608-XX+180,2490-YY,2338-YY ;RGT BTM
|
||
.WORD 0
|
||
|
||
BXO .set >578
|
||
BYO .set >95
|
||
|
||
BKWALL .word >ba8-BXO,>130-BYO,>bf3-BXO,>178-BYO,0
|
||
.word >ba8-BXO,>130-BYO,>bf3-BXO,>178-BYO,0
|
||
.word >ba8-BXO,>130-BYO,>bf3-BXO,>178-BYO,0
|
||
.word >ba8-BXO,>130-BYO,>bf3-BXO,>178-BYO,0
|
||
.word >ba8-BXO,>130-BYO,>bf3-BXO,>178-BYO,0
|
||
|
||
.word >bf4-BXO,>130-BYO,>c3e-BXO,>178-BYO,0
|
||
.word >bf4-BXO,>130-BYO,>c3e-BXO,>178-BYO,0
|
||
.word >bf4-BXO,>130-BYO,>c3e-BXO,>178-BYO,0
|
||
.word >bf4-BXO,>130-BYO,>c3e-BXO,>178-BYO,0
|
||
.word >bf4-BXO,>130-BYO,>c3e-BXO,>178-BYO,0
|
||
|
||
.word >bc2-BXO,>150-BYO,>c24-BXO,>188-BYO,0
|
||
.word >bc2-BXO,>150-BYO,>c24-BXO,>188-BYO,0
|
||
.word >bc2-BXO,>150-BYO,>c24-BXO,>188-BYO,0
|
||
.word >bc2-BXO,>150-BYO,>c24-BXO,>188-BYO,0
|
||
.word 0
|
||
|
||
INTARGET
|
||
;A0=X,A1=Y
|
||
;SET A9=1 IF THIS X/Y IS IN TARGET RANGE
|
||
MMTM SP,A0,A1,A8
|
||
MOVE @T72PNTR,A8,L
|
||
JRZ INT2
|
||
MOVE A1,A4
|
||
CALLA GETCPNT
|
||
MOVE @INEXP,A8
|
||
JRNZ INT1
|
||
MOVX A1,A6
|
||
SUB A4,A1
|
||
ABS A1
|
||
CMPI [95,0],A1 ;70 ;Y RANGE FROM CENTER
|
||
JRNC INT1
|
||
SLL 16,A6
|
||
SUB A6,A0
|
||
ABS A0
|
||
CMPI [95,0],A0 ;70 ;X RANGE
|
||
JRNC INT1
|
||
MOVK 2,A9
|
||
INT1 MMFM SP,A0,A1,A8
|
||
RETS
|
||
|
||
INT2 MOVE A0,A4
|
||
MOVE A1,A6
|
||
SRL 16,A4 ;X
|
||
SRL 16,A6 ;Y
|
||
CLR A0
|
||
MOVE A0,@KEEPT,L
|
||
MOVE @WAVE,A0
|
||
SLL 5,A0
|
||
ADDI TARGL,A0 ;GET FIXED TARGET LIST
|
||
MOVE *A0,A0,L
|
||
CLR A7
|
||
NEXT0 INC A7
|
||
MOVE A0,A5
|
||
MOVE *A0+,A1,W
|
||
JRZ OUT
|
||
CMP A1,A4
|
||
JRLT NEXT ;IF BRNCH RECT LFT EDGE > PLYR X
|
||
MOVE *A0+,A1,W
|
||
CMP A1,A6
|
||
JRLT NEXTA ;IF BRNCH RECT TOP EDGE > PLYR Y
|
||
MOVE *A0+,A1,W
|
||
CMP A1,A4
|
||
JRGT NEXTB ;IF BRNCH RECT RGT EDGE < PLYR X
|
||
MOVE *A0+,A1,W
|
||
CMP A1,A6
|
||
JRGT NEXTZ ;IF BRNCH RECT BOT EDGE < PLYR Y
|
||
;HIT
|
||
;YES WILL ATTACK THIS FIXED SPOT
|
||
MOVE @CRSRAM,A1,L
|
||
BTST A7,A1
|
||
JRNZ NEXTZ
|
||
SLL 5,A7
|
||
ADDI TTB,A7
|
||
MOVE *A7,A7,L
|
||
OR A7,A1
|
||
MOVE A1,@CRSRAM,L
|
||
MOVK 1,A9
|
||
MOVE A5,@KEEPT,L
|
||
MOVE *A0,A0,W
|
||
MOVE A0,*A13(KEEPY)
|
||
OUT
|
||
MMFM SP,A0,A1,A8
|
||
RETS
|
||
|
||
NEXT ADDK 16,A0 ;48
|
||
NEXTA ADDK 16,A0 ;32
|
||
NEXTB ADDK 16,A0
|
||
NEXTZ ADDK 16,A0
|
||
JRUC NEXT0
|
||
|
||
TTB .LONG 0,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192
|
||
.LONG 8192*2,8192*4,8192*8,8192*16,8192+32
|
||
.LONG 8192*64,8192*128,8192*256,8192*512
|
||
.LONG 8192*1024,8192*2048,8192*4096
|
||
|
||
CRUISE2
|
||
;A8=MISSILE
|
||
MOVE *A9+,A0,L
|
||
JRZ ENDI
|
||
MOVE *A8(OXVEL),A1,L
|
||
ADD A0,A1
|
||
MOVE A1,*A8(OXVEL),L
|
||
SLEEPK 4
|
||
JRUC CRUISE2
|
||
ENDI MOVK 10H,A10 ;29
|
||
CALLR SHAKER
|
||
DIE
|
||
|
||
ARC1 .LONG 20000H,018000H,0C000H,6000H,02000H
|
||
.LONG -02000H,-5000H,-08000H,-010000H,-18000H,0
|
||
ARC2 .LONG -20000H,-018000H,-0C000H,-6000H,-02000H
|
||
.LONG 02000H,5000H,08000H,010000H,18000H,0
|
||
|
||
SHRINK
|
||
.LONG CRS12V2
|
||
.WORD 3
|
||
.LONG CRS12V3
|
||
.WORD 3
|
||
.LONG CRS12V4
|
||
.WORD 3
|
||
.LONG CRS12V5
|
||
.WORD 3
|
||
.LONG CRS12V6
|
||
.WORD 3
|
||
.LONG CRS12V7
|
||
.WORD 3
|
||
.LONG 0
|
||
|
||
CRUISEA
|
||
;A8=XHAIR IMG
|
||
;CRUISE IN FROM BOTTOM
|
||
MOVE A11,*A13(MYPLYR)
|
||
MOVI CR12,A14
|
||
CALLA DO_ALL_STUFF
|
||
MOVE *A8(OXPOS),A1
|
||
MOVE *A8(OYPOS),A10
|
||
ADDI 250,A10
|
||
MOVE A1,*A0(OXPOS)
|
||
MOVE A10,*A0(OYPOS)
|
||
MOVE A0,A8
|
||
SUBI 250,A10
|
||
JRUC CRTOP
|
||
;CRSSND3 .WORD >F5F3,>3A,>80C6,0 ;CRUISE MISSILE COMING IN
|
||
CRUISE
|
||
;A8=XHAIR IMG
|
||
;A10=TARGET COORDS FOR POSITIONING
|
||
MOVE A11,*A13(MYPLYR)
|
||
CALLA RANDOM
|
||
ANDI 03FH,A0
|
||
MOVI TARG1,A10
|
||
BTST 0,A0
|
||
JRZ CX1
|
||
MOVI TARG2,A10
|
||
CX1 CALLA PRCSLP
|
||
MOVI CRSSND,A0
|
||
CALLA ONESND
|
||
; SLEEPK 1
|
||
; MOVI CRSSND3,A0
|
||
; CALLA ONESND
|
||
;CRUISE IN FROM TOP
|
||
;CRUISE IN FROM BOTTOM
|
||
MOVI CR12,A14
|
||
CALLA DO_ALL_STUFF
|
||
MOVE A0,A8
|
||
MOVE *A10(16),A1
|
||
ADDI 240,A1
|
||
MOVI -8,B0
|
||
MOVK 8,B1
|
||
CALLA RANGRAND
|
||
ADD A0,A1
|
||
MOVE A1,*A8(OYPOS)
|
||
|
||
MOVE @WORLDTLX,A4,L
|
||
CLR B0
|
||
MOVI 150,B1
|
||
CALLA RANGRAND
|
||
MOVE *A10,A1
|
||
ADD A1,A0
|
||
MOVE @PCNT,A2
|
||
BTST 0,A2
|
||
JRZ HAF0
|
||
SUBI 070H,A0
|
||
MOVE A0,*A8(OXPOS)
|
||
MOVE *A10,A5
|
||
ADDK 08H,A5
|
||
JRUC HAFF
|
||
HAF0 ADDI 070H,A0
|
||
MOVE A0,*A8(OXPOS)
|
||
MOVE *A10,A5
|
||
SUBI 038H,A5
|
||
HAFF MOVI -10,B0
|
||
MOVK 10,B1
|
||
CALLA RANGRAND
|
||
ADD A0,A5
|
||
MOVE *A10(16),A6
|
||
MOVI 070H,A7
|
||
CALLA XYSEEK2
|
||
MOVE A5,*A8(OXVEL),L
|
||
MOVE A6,*A8(OYVEL),L
|
||
MOVE *A8(OXPOS),A0
|
||
MOVE @PCNT,A1
|
||
BTST 0,A1
|
||
JRZ HAF
|
||
ADDI 070H,A0
|
||
MOVI ARC2,A9
|
||
JRUC HAF2
|
||
HAF
|
||
MOVI ARC1,A9
|
||
SUBI 070H,A0
|
||
HAF2 MOVE A0,*A8(OXPOS)
|
||
CREATE CMAN,CRUISE2
|
||
MOVE *A10(16),A10
|
||
|
||
CRTOP SLEEPK 1
|
||
MOVE *A8(OYPOS),A0
|
||
SUB A10,A0
|
||
ABS A0
|
||
CMPI 30H,A0
|
||
JRGT CRTOP
|
||
MOVI SHRINK,A9
|
||
JSRP FRANIMQ
|
||
CLR A0
|
||
MOVE A0,*A8(OXVEL),L
|
||
MOVE A0,*A8(OYVEL),L
|
||
|
||
move @WAVE,a0
|
||
cmpi 36,a0
|
||
jreq wv36
|
||
MOVE @T72PNTR,A0
|
||
JRZ FD
|
||
;TURN ON COLLISIONS WITH THIS IMG FOR JUST A TICK OR TWO
|
||
wv36 MOVI DMAWNZ,A4 ;NON-ZERO VALUE
|
||
MOVE A4,*A8(OFLAGS),W
|
||
MOVI CLSPLYR|TYPBOMB,A5 ;ID
|
||
MOVE A5,*A8(OID),W
|
||
FD MOVI ALTEXP5,A0
|
||
CALLA ONESND
|
||
MOVI XBOOM2,A9
|
||
jauc FRQDELDIE
|
||
|
||
CR12:
|
||
.LONG 0,0,CRS12V1
|
||
.WORD 370,DMAWNZ|M_NOCOLL,CLSDEAD
|
||
.LONG 0,-30000H
|
||
|
||
;XVL: .LONG 0,0B333H,019999H,019999H,019999H,019999H,019999H,0B333H,0
|
||
; .LONG -0B333H,-019999H,-019999H,-019999H,-019999H,-019999H,-0B333H
|
||
;YVL: .LONG -019999H,-019999H,-019999H,-0CCCCH,0,0CCCCH,019999H,019999H,019999H
|
||
; .LONG 019999H,019999H,0CCCCH,0,-0CCCCH,-019999H,-019999H
|
||
|
||
;XVL: .LONG 0,08000H,0C000H,012000H,020000H,0,0,0,0,0,0,0,-20000H
|
||
; .LONG -12000H,-0C000H,-08000H
|
||
;YVL: .LONG -04000H,-03000H,-01000H,2000H,10000H,0,0,0,0,0,0,0,10000H
|
||
; .LONG 2000H,-1000H,-3000H,-4000H
|
||
|
||
;DIR TO FACE IN A0
|
||
; 01
|
||
; 16 02
|
||
; 15 03
|
||
; 14 04
|
||
; 13 05
|
||
; 12 06
|
||
; 11 07
|
||
; 10 08
|
||
; 09
|
||
;701
|
||
;6 2
|
||
;543
|
||
|
||
;CVRT2 .BYTE 0,5,13,9,1,7,11,3,15,6,12,2,16,8,10,4
|
||
; 04
|
||
; 12 11
|
||
; 08 07
|
||
; 16 15
|
||
; 02 01
|
||
; 10 09
|
||
; 06 05
|
||
; 14 13
|
||
; 03
|
||
|
||
;GETHDR - RETURNS 1 OF 16 DIRECTIONS BASED ON OBJECTS X,Y VELOCITIES
|
||
;PARAMS:
|
||
; A1 = OBJ X VELOCITY
|
||
; A2 = OBJ Y VELOCITY
|
||
;RETURNS:
|
||
; A0 = 4,B,7,F,1,9,5,D,3,E,6,A,2,10,8,C = CW DIRECTION STARTING AT 12 O'CLOCK
|
||
; 4
|
||
; 2 1
|
||
; 3
|
||
GETHDR:
|
||
MOVE A1,A3
|
||
MOVE A2,A4
|
||
ABS A3 ;ABSOLUTE X VELOCITY
|
||
ABS A4 ;ABSOLUTE Y VELOCITY
|
||
MOVE A3,A5
|
||
ADD A4,A5 ;SUM Y+X
|
||
JRNE GAD1 ;BR = THERE IS A DIRECTION HERE!
|
||
CLR A3 ;STANDING CASE
|
||
JRUC SETDVAL
|
||
GAD1:
|
||
MOVK 3,A5
|
||
MOVK 3,A7
|
||
MPYU A3,A5 ;CALC 3*X
|
||
MPYU A4,A7 ;CALC 3*Y
|
||
CMP A7,A3 ;XV>3*YV ?
|
||
JRHS GADX ;BR = CHECK X VELOCITY CASE
|
||
CMP A5,A4 ;YV>3*XV ?
|
||
JRHS GADY ;BR = CHECK Y VELOCITY CASE
|
||
;
|
||
;DIAGONAL XY VELOCITY CASE
|
||
;4 POSSIBLE QUADRANTS 0-3
|
||
; 3 2
|
||
; 1 0
|
||
MOVE A1,A3 ;SAVE X,Y VELOCITIES
|
||
MOVE A2,A4
|
||
SRL 31,A1 ;X VEL
|
||
SRL 31,A2 ;Y VEL
|
||
SLL 1,A2
|
||
ADD A1,A2
|
||
;WE NOW HAVE THE QUADRANT NOW CHECK FOR 1 OF 3 DIRECTIONS WITHIN QUADRANT
|
||
;IN A2
|
||
ABS A3 ;X UNSIGNED COMPARE
|
||
ABS A4 ;Y
|
||
CMP A3,A4 ;Y>X?
|
||
JRGT DIFF ;BR = YES
|
||
SUB A4,A3
|
||
CMPI >2800,A3 ;-4000?
|
||
JRLT INRNGE ;WITHIN RANGE, USE QUADRANT K
|
||
ADDK 9,A2 ;RANGE LO
|
||
JRUC SETRNGE
|
||
DIFF:
|
||
SUB A3,A4
|
||
CMPI >2800,A4 ;+4000
|
||
JRLT INRNGE ;WITHIN RANGE USE QUADRANT K
|
||
ADDK >D,A2 ;RANGE HI
|
||
JRUC SETRNGE
|
||
INRNGE:
|
||
ADDK 5,A2
|
||
SETRNGE:
|
||
MOVE A2,A3
|
||
JRUC SETDVAL
|
||
;X VELOCITY CASE
|
||
GADX:
|
||
MOVK 1,A3 ;DISCRETE RYTE
|
||
MOVE A1,A1
|
||
JRNN SETDVAL ;
|
||
MOVK 2,A3 ;LEFT
|
||
JRUC SETDVAL
|
||
;Y VELOCITY CASE
|
||
GADY:
|
||
MOVK 3,A3 ;DISCRETE DOWN
|
||
MOVE A2,A2
|
||
JRNN SETDVAL
|
||
MOVK 4,A3 ;UP
|
||
;HAVE OFFSET IN A3
|
||
SETDVAL:
|
||
MOVE A3,A0
|
||
RETS
|
||
|
||
BLINKLST
|
||
.LONG DET1
|
||
.WORD 5
|
||
.LONG DET2
|
||
.WORD 5
|
||
.LONG DET3
|
||
.WORD 5
|
||
.LONG DET1
|
||
.WORD 3
|
||
.LONG DET2
|
||
.WORD 3
|
||
.LONG DET3
|
||
.WORD 3
|
||
.LONG DET1
|
||
.WORD 3
|
||
.LONG DET2
|
||
.WORD 3
|
||
.LONG DET3
|
||
.WORD 3
|
||
BLINKLST2
|
||
.LONG DET1
|
||
.WORD 1
|
||
.LONG DET2
|
||
.WORD 1
|
||
.LONG DET3
|
||
.WORD 1
|
||
.LONG DET1
|
||
.WORD 1
|
||
.LONG DET2
|
||
.WORD 1
|
||
.LONG DET3
|
||
.WORD 1
|
||
.LONG DET1
|
||
.WORD 1
|
||
.LONG DET2
|
||
.WORD 1
|
||
.LONG DET3
|
||
.WORD 1
|
||
.LONG 0
|
||
FIREEXP:
|
||
.LONG KBM1
|
||
.WORD NEWPALET|4
|
||
.LONG BULLET
|
||
.LONG KBM2
|
||
.WORD 4
|
||
.LONG KBM3
|
||
.WORD 4
|
||
.LONG KBM4
|
||
.WORD 4
|
||
.LONG KBM5
|
||
.WORD 4
|
||
.LONG KBM6
|
||
.WORD 4
|
||
.LONG KBM7
|
||
.WORD 4
|
||
.LONG 0
|
||
BLUEEXP:
|
||
.LONG CLD1
|
||
.WORD NEWPALET|3
|
||
.LONG BLUBOOM
|
||
.LONG CLD2
|
||
.WORD 3
|
||
.LONG CLD3
|
||
.WORD 3
|
||
.LONG CLD4
|
||
.WORD 3
|
||
.LONG CLD4A
|
||
.WORD 3
|
||
.LONG CLD4B
|
||
.WORD 3
|
||
.LONG CLD5
|
||
.WORD 3
|
||
.LONG CLD6
|
||
.WORD 3
|
||
.LONG CLD7
|
||
.WORD 3
|
||
.LONG CLD8
|
||
.WORD 3
|
||
.LONG CLD9
|
||
.WORD 3
|
||
.LONG CLD10
|
||
.WORD 3
|
||
.LONG CLD11
|
||
.WORD 3
|
||
.LONG 0
|
||
|
||
GOT_HSTG:
|
||
;A8=HOSTAGE PNTR
|
||
;A0=PLYR PNTR
|
||
MMTM SP,A1,A7,A9,A11
|
||
MOVE A0,A9
|
||
MOVE *A0(OPLINK),A0,L
|
||
MOVE *A0(DEAD),A0
|
||
JRNZ GOUT
|
||
MOVE *A8(OFLAGS),A1
|
||
ORI M_NOCOLL,A1
|
||
MOVE A1,*A8(OFLAGS)
|
||
MOVE *A8(OPLINK),A0,L
|
||
MOVI EXPHSTG,A7
|
||
MOVI FUTUREPID,A1
|
||
CALLA XFERPROC
|
||
GOUT MOVK 1,A0
|
||
MOVE A0,@OUT_FLG
|
||
MMFM SP,A1,A7,A9,A11
|
||
RETS
|
||
|
||
THNKU2 .WORD >F9EF,>30,>810F,0 ;GIRL "THANK YOU"
|
||
THNKU3 .WORD >F9EF,>38,>8112,0 ;GIRL "MY HERO"
|
||
|
||
GIRLST
|
||
.LONG SHCAKLDC1
|
||
.LONG SHCAKLDC2
|
||
.LONG SHCAKLDC3
|
||
.LONG SHCAKLDC4
|
||
.LONG SHCAKLDE1 ;FEMALE REPORTER
|
||
.LONG DOC1
|
||
.LONG DOC2
|
||
.LONG DOC3
|
||
.LONG DOC4
|
||
.LONG BGRL1
|
||
.LONG BGRL2
|
||
.LONG BGRL3
|
||
.LONG GRL1
|
||
.LONG GRL2
|
||
.LONG GRL3
|
||
.LONG GRL4
|
||
.LONG BABE1
|
||
.LONG BABE2
|
||
.LONG BABE3
|
||
.LONG BABE4
|
||
.LONG 0
|
||
|
||
EXPHSTG:
|
||
;A9=PLYR PNTR
|
||
;A8=HOSTAGE IMG
|
||
;BEEM OUT HOSTAGE
|
||
;FLOAT PNTS TOWARD SCOREBOARD
|
||
;THANK-YOU SPEECH CALL
|
||
CLR A0
|
||
MOVE A0,*A8(OXVEL),L
|
||
MOVE A0,*A8(OYVEL),L
|
||
MOVI THNKU,A0
|
||
MOVE *A8(OIMG),A2,L
|
||
MOVI GIRLST,A3
|
||
CKGIRL MOVE *A3+,A4,L
|
||
JRZ CKOP
|
||
CMP A4,A2
|
||
JRNZ CKGIRL
|
||
MOVI THNKU2,A0
|
||
MOVE @HCOUNT,A1
|
||
BTST 0,A1
|
||
JRZ CKOP
|
||
MOVI THNKU3,A0
|
||
CKOP
|
||
CALLA ONESND
|
||
MOVI SCASH3,A0
|
||
CALLA ONESND
|
||
MOVE *A9(OPLINK),A9,L
|
||
MOVE *A9(PNUM),A10
|
||
MOVE *A8(OID),A11
|
||
MOVI CLSDEAD,A0
|
||
MOVE A0,*A8(OID),W ;HOSTAGE
|
||
MOVI DMAWNZ|M_NOCOLL,A0
|
||
MOVE A0,*A8(OFLAGS),W
|
||
MOVE *A8(OYPOS),A0
|
||
SUBK 10,A0
|
||
MOVE A0,*A8(OYPOS)
|
||
MOVI DOTLST,A9 ;DISSIPATE HOSTAGE
|
||
JSRP FRANIMQ
|
||
;CHANGE IMAGE TO PNTS AND FLOAT TOWARDS SCOREBOARD
|
||
;A10=PNUM
|
||
MOVI 300,A0
|
||
MOVE A0,*A8(OZPOS) ;PUT PNTS UP HIGH!
|
||
MOVI P1DATA,A2 ;FOR SCRADD
|
||
DEC A10
|
||
JRZ P1YES
|
||
MOVI P2DATA,A2
|
||
P1YES MOVE @GAMSTATE,A0
|
||
CMPI INAMODE,A0
|
||
JRZ P1YY
|
||
MOVE *A2(THSTGS),A0
|
||
CMPI 297,A0
|
||
JRGT P1YY
|
||
INC A0
|
||
MOVE A0,*A2(THSTGS) ;TOTAL HOSTAGES
|
||
P1YY
|
||
CMPI CLSNEUT|TYPHSTG|SUBRUN,A11
|
||
JRNZ P1YES2
|
||
;RUNNING HSTG SCORES MINIMUM PNTS
|
||
MOVK 10H,A1 ;TEN POINTS FOR RUNNING HOSTAGES
|
||
MOVI 32*1,A6 ;POINT AT BONUS TEN IMG
|
||
JRUC SCRIT
|
||
P1YES2
|
||
SLL 5,A10
|
||
MOVE *A2(PTSRAM),A0
|
||
INC A0 ;POINTS INCREASE FOR SUCCESSIVE HSTGS
|
||
CMPI 11,A0
|
||
JRC SKIPAD
|
||
MOVK 10,A0 ;KEEP IT AT 10 POINTS UNTIL DEATH!
|
||
SKIPAD
|
||
MOVE A0,*A2(PTSRAM)
|
||
SLL 5,A0
|
||
MOVE A0,A6
|
||
MOVI HPNTR,A1 ;AMOUNT OF SCORE TABLE
|
||
ADD A1,A0
|
||
MOVE *A0,A1,L
|
||
SCRIT
|
||
;A2=P1/P2DATA
|
||
CALLA SCRADD2 ;DO IT!
|
||
MOVE A6,A1
|
||
ADDI PIMG,A1
|
||
MOVE *A1,A1,L
|
||
MOVE *A8(OFLAGS),A4
|
||
CALLA ANI
|
||
CALLR CYCLEON
|
||
MOVI 40,B0
|
||
MOVI 80,B1
|
||
CALLA RANGRAND
|
||
CALLA PRCSLP
|
||
CLR A11
|
||
|
||
INHERE:
|
||
;JEWEL ON GROUND JUMPS IN HERE
|
||
;EXTRA BMB IMAGES JUMP IN HERE
|
||
;KEY ICON JUMPS IN HERE
|
||
;A10=0 OR 1 FOR PLYR #
|
||
;A8=ICON IMG
|
||
;A11=1 IF FROM KEY FLOATING TO SCORE BOARD
|
||
|
||
CLR A5
|
||
CLR A6
|
||
MOVE @WORLDTL,A0,L
|
||
MOVY A0,A6 ;Y VALUE TO SCROLL TO IN A10
|
||
SRL 16,A6
|
||
ADDK 14H,A6 ;Y
|
||
ZEXT A6
|
||
MOVX A0,A5 ;X VALUE TO SCROLL TO IN A9
|
||
ADDI 28H,A5
|
||
MOVE A10,A10
|
||
JREQ UPLC
|
||
;PLYR 2 TV SEEK
|
||
ADDI 0118H,A5
|
||
UPLC MOVI 80H,A7 ;60
|
||
CALLA XYSEEK2
|
||
MOVE A5,*A8(OXVEL),L
|
||
MOVE A6,*A8(OYVEL),L
|
||
|
||
MOVK 11,A9
|
||
SLPC
|
||
MOVE @WORLDTL+16,A6
|
||
MOVE @WORLDTL,A5
|
||
MOVE A10,A10
|
||
JREQ UPLCZ
|
||
;PLYR 2 TV SEEK
|
||
ADDI 0300,A5
|
||
UPLCZ
|
||
MOVE *A8(OYPOS),A0
|
||
SUB A6,A0
|
||
CMPI 40,A0
|
||
JRNC NXPC
|
||
MOVE *A8(OXPOS),A0
|
||
SUB A5,A0
|
||
CMPI 100,A0
|
||
JRC DNSLPC
|
||
NXPC
|
||
SLEEPK 6
|
||
MOVE @HALT,A0
|
||
JRNZ NXPC
|
||
DSJ A9,SLPC
|
||
|
||
DNSLPC
|
||
;DELETE FLOATING IMAGE
|
||
CALLA DELOBJA8
|
||
MOVE A11,A11 ;IF A11=0, IT IS NOT AN ICON
|
||
JANZ IP
|
||
DIE
|
||
|
||
HPNTR .LONG 0,10H,20H,30H,40H,50H,60H,70H,80H,90H,100H
|
||
PIMG .LONG 0,PTS1,PTS2,PTS3,PTS4,PTS5,PTS6,PTS7,PTS8,PTS9,PTS10
|
||
|
||
|
||
CYCLEON
|
||
;TURN ON HOSTAGE PNTS COLOR CYCLE
|
||
;OR ADD TO ITS LIFE SPAN
|
||
MOVE @AFTR_WRP,A0
|
||
JRNZ CYR
|
||
MOVE @CYCLIFE,A0
|
||
JRZ CYCON
|
||
ADDK 2,A0 ;3 SECONDS MORE
|
||
MOVE A0,@CYCLIFE
|
||
CYR RETS
|
||
CYCON
|
||
;CYCLE POW BONUS POINTS
|
||
MMTM SP,A8,A10
|
||
MOVI [63,1],A8 ;START AT COLOR 60, CYCLE 1 COLOR
|
||
MOVI PPLP,A9 ;PAL NAME
|
||
MOVI COLTAB,A10 ;TABLE TO CYCLE WITH
|
||
MOVK 3,A11 ;RATE OF CYCLE IN TICKS
|
||
CREATE POWPID,CYCLE_TABLE ;START PROCESS TO DO CYCLE
|
||
MOVE A0,A9
|
||
CREATE POWPID,CKCYC
|
||
MMFM SP,A8,A10
|
||
RETS
|
||
|
||
COLTAB .WORD 0380H,1380H,2380H,3380H,4380H,5380H,6380H,7380H,7300H
|
||
.WORD 7280H,7200H,7180H,7080H,7008H,7008H,7010H,7010H,701CH
|
||
.WORD 701CH,601CH,501CH,409CH,309CH,209CH,219CH,029CH,039CH
|
||
.WORD 139CH,239CH,339CH,539CH,739CH,7390H,7380H,6380H,4380H
|
||
;NEED A DUPLICATE SET
|
||
.WORD 0380H,1380H,2380H,3380H,4380H,5380H,6380H,7380H,7300H
|
||
.WORD 7280H,7200H,7180H,7080H,7008H,7008H,7010H,7010H,701CH
|
||
.WORD 701CH,601CH,501CH,409CH,309CH,209CH,219CH,029CH,039CH
|
||
.WORD 139CH,239CH,339CH,539CH,739CH,7390H,7380H,6380H,4380H
|
||
.word -1
|
||
|
||
CKCYC
|
||
; DIE
|
||
MOVK 2,A0 ;FOR 3 SECONDS
|
||
MOVE A0,@CYCLIFE
|
||
CK2 SLEEP 60
|
||
MOVE @CYCLIFE,A0
|
||
DEC A0
|
||
MOVE A0,@CYCLIFE
|
||
JRNZ CK2
|
||
MOVE A9,A0
|
||
CALLA KILL
|
||
DIE
|
||
|
||
DOTLST:
|
||
;DISSIPATE HOSTAGE
|
||
.LONG BM1
|
||
.WORD NEWPALET|2
|
||
.LONG PPLP
|
||
.LONG BM2
|
||
.WORD 2
|
||
.LONG BM3
|
||
.WORD 2
|
||
.LONG BM4
|
||
.WORD 2
|
||
.LONG BM5
|
||
.WORD 2
|
||
.LONG BM6
|
||
.WORD 2
|
||
.LONG BM7
|
||
.WORD 2
|
||
.LONG BM8
|
||
.WORD 2
|
||
.LONG BM9
|
||
.WORD 2
|
||
.LONG BM10
|
||
.WORD 2
|
||
.LONG 0
|
||
|
||
BMLM2: ;TIME BOMB HITS LAND MINE
|
||
MMTM SP,A1,A7,A11
|
||
MOVE *A8(OPLINK),A1,L
|
||
MOVE *A1(MYPLYR),A1
|
||
MOVI P1DATA,A2
|
||
CMPI 1,A1
|
||
JRZ ABM2
|
||
MOVI P2DATA,A2
|
||
CMPI 2,A1
|
||
JRNZ SKPBM
|
||
ABM2 MOVI MINEPT,A1
|
||
PUSH A0
|
||
CALLA SCRADD2
|
||
PULL A0
|
||
SKPBM
|
||
MOVE *A0(OFLAGS),A1
|
||
ORI M_NOCOLL,A1
|
||
MOVE A1,*A0(OFLAGS)
|
||
MOVE A0,A10
|
||
CREATE0 EXPMINE
|
||
MOVE *A10(OPLINK),A0,L
|
||
JRZ SKP2
|
||
CALLA KILL
|
||
SKP2
|
||
MOVI MTING,A0 ;LAND MINE EXPLOSION SND
|
||
CALLA ONESND
|
||
MOVK 1,A0
|
||
MOVE A0,@OUT_FLG
|
||
MMFM SP,A1,A7,A11
|
||
RETS
|
||
|
||
EXPMINE2:
|
||
CALLR DOXYM
|
||
CREATE CMAN,DOMORE
|
||
CREATE CMAN,DOMORE
|
||
CREATE CMAN,DOMORE
|
||
CREATE CMAN,DOMORE
|
||
CREATE CMAN,DOMORE
|
||
MOVI 72,A0
|
||
MOVE A0,*A8(OZPOS)
|
||
JRUC BLOW
|
||
EXPMINE:
|
||
;FOR BLOWING UP LAND MINE WHEN PLYR STEPS ON IT OR TIME BOMB PLACED NEARBY!
|
||
;A10=LAND MINE IMAGE PNTR
|
||
CALLR DOXYM
|
||
BLOW MOVI BOOM3,A9
|
||
jauc FRQDELDIE
|
||
|
||
DOXYM
|
||
MOVE A10,A8
|
||
MOVE *A8(OFLAGS),A0
|
||
ORI M_NOCOLL,A0
|
||
MOVE A0,*A8(OFLAGS)
|
||
MOVE *A8(OYPOS),A0
|
||
ADDK 06H,A0
|
||
MOVE A0,*A8(OYPOS)
|
||
MOVE *A8(OXPOS),A0
|
||
ADDK 06H,A0
|
||
MOVE A0,*A8(OXPOS)
|
||
MOVI 100,A0
|
||
MOVE A0,*A8(OZPOS)
|
||
|
||
; MOVE *A8(OIMG),A0,L
|
||
; CMPI M1,A0
|
||
; JRZ RRET
|
||
; MOVE *A8(OPLINK),A0,L
|
||
; CALLA KILL
|
||
;RRET
|
||
RETS
|
||
|
||
DOMORE
|
||
MOVE *A8(OYVAL),A1,L
|
||
MOVI EXPL1,A2 ;DOES NOT MATTER
|
||
MOVI 72,A3 ;69
|
||
MOVI DMAWNZ,A4 ;NON-ZERO VALUE
|
||
CLR A5
|
||
MOVI -9000H,B0
|
||
MOVI 9000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A6
|
||
MOVI -9000H,B0
|
||
MOVI 9000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A7
|
||
MOVE *A8(OXVAL),A0,L
|
||
CALLA BEGINOBJ2
|
||
JRUC BLOW
|
||
|
||
; SHAKER - SHAKE SCREEN AS AS IF AN EARTHQUAKE IS IN EFFECT
|
||
; A10 = # TICKS TO SHAKE AND POWER OF SHAKE
|
||
; NOTE: TIME TO SHAKE MUST BE MORE THAN 6 TICKS
|
||
; RETURNS:
|
||
; NOTHING AT ALL
|
||
SHAKER:
|
||
MOVE @SHK_ON,A0
|
||
JRNZ SHKOUT
|
||
MOVE A10,A11
|
||
MOVK 6,A0
|
||
MOVE A0,@SHK_ON
|
||
DIVS A0,A11
|
||
MOVE A0,@AMP
|
||
MOVE A11,@AMPCNT
|
||
|
||
CREATE0 SHAKELP
|
||
SHKOUT RETS
|
||
|
||
SHAKELP:
|
||
CLR B0
|
||
MOVE @AMP,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,@XSET
|
||
CLR B0
|
||
MOVE @AMP,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,@YSET
|
||
MOVI 500,A0
|
||
CALLA RANDPER
|
||
JRC SHAKEY
|
||
SHAKEX:
|
||
MOVE @XSET,A1
|
||
MOVE @WORLDTLX,A0,L
|
||
SLL 16,A1
|
||
ADD A1,A0
|
||
MOVE A0,@WORLDTLX,L
|
||
SLEEPK 1
|
||
MOVE @XSET,A1
|
||
MOVE @WORLDTLX,A0,L
|
||
SLL 16,A1
|
||
SUB A1,A0
|
||
MOVE A0,@WORLDTLX,L
|
||
JRUC SHAKELP
|
||
SHAKEY:
|
||
MOVE @YSET,A1
|
||
MOVE @WORLDTLY,A0,L
|
||
SLL 16,A1
|
||
ADD A1,A0
|
||
MOVE A0,@WORLDTLY,L
|
||
SLEEPK 1
|
||
MOVE @YSET,A1
|
||
MOVE @WORLDTLY,A0,L
|
||
SLL 16,A1
|
||
SUB A1,A0
|
||
MOVE A0,@WORLDTLY,L
|
||
MOVE @AMPCNT,A2
|
||
DEC A2
|
||
MOVE A2,@AMPCNT
|
||
JRNZ AMPOK
|
||
MOVE A11,@AMPCNT
|
||
MOVE @AMP,A0
|
||
CMPI 1,A0
|
||
JRZ AMPOK
|
||
DEC A0
|
||
MOVE A0,@AMP
|
||
AMPOK:
|
||
DSJ A10,SHAKELP
|
||
MOVE A10,@SHK_ON
|
||
DIE
|
||
|
||
|
||
ANI_HSTG:
|
||
;A8=HSTG IMAGE FROM BACKGROUND UPDATER
|
||
;A9=HOSTAGE #
|
||
;ANIMATE, THEN KILL OFF ONCE IT IS OFF SCREEN
|
||
MOVE A13,*A8(OPLINK),L
|
||
SLL 5,A9
|
||
MOVE @HSTGSET,A0
|
||
JRNZ HS1
|
||
CALLA RANDOM
|
||
MOVE A0,A10
|
||
ANDI 0FH,A10
|
||
SLL 5,A10
|
||
ADDI HSTGLST2,A10 ;BALL AND CHAIN
|
||
MOVE *A10,A9,L
|
||
JRUC HSO
|
||
HS1 ADDI HSTGLST,A9 ;STUCK IN GOO
|
||
MOVE *A9,A9,L
|
||
HSO MOVE A9,A11
|
||
|
||
MOVE *A9,A1,L
|
||
MOVE *A8(OFLAGS),A4
|
||
CALLA ANI
|
||
|
||
CALLR AHELP
|
||
|
||
MOVK 1,B0
|
||
MOVI 90,B1 ;91
|
||
CALLA RANGRAND
|
||
; MOVE A0,A10
|
||
CALLA PRCSLP
|
||
|
||
ANIH0 MOVK 12,A10 ;5
|
||
ANIHSTG
|
||
JSRP FRANIMQ
|
||
MOVE A11,A9
|
||
CALLR AHELP
|
||
DSJ A10,ANIHSTG
|
||
CALLA SCRTST
|
||
JRZ ANIH0
|
||
TNTIT
|
||
MOVE @HSTGS_LOST,A0
|
||
INC A0
|
||
MOVE A0,@HSTGS_LOST
|
||
jauc DELOBJDIE
|
||
|
||
AHELP
|
||
MOVI 180,A0
|
||
CALLA RANDPER
|
||
JRNC AJ1
|
||
ANDI 07H,A0
|
||
SLL 5,A0
|
||
ADDI HELPS,A0
|
||
MOVE *A0,A0,L
|
||
CALLA ONESND
|
||
AJ1 RETS
|
||
HELP .WORD >F97E,>24,>80C1,0 ;"HELP"
|
||
HELP2 .WORD >F97F,>34,>80BF,0 ;"OVER HERE"
|
||
HELP3 .WORD >F97E,>24,>80F1,0 ;WHISTLE
|
||
HELP4 .WORD >F87E,>24,>80D6,0 ;WHISTLE
|
||
HELPS .LONG HELP,HELP2,HELP3,HELP4,HELP5,HELP6,HELP7,HELP8
|
||
.LONG HELP,HELP2,HELP3,HELP5,HELP5,HELP6,HELP6,HELP6
|
||
HELP5 .WORD >F97F,>34,>810D,0 ;GIRL HELP ME
|
||
HELP6 .WORD >F9CF,>44,>810E,0 ;GIRL "OVER HERE"
|
||
HELP7 .WORD >F9CF,>44,>8110,0 ;GIRL SAVE ME
|
||
HELP8 .WORD >F97F,>34,>8111,0 ;GIRL HELP ME
|
||
;
|
||
HSTGLST .LONG HGUYA,HGUYB,HGUYC,HGUYD
|
||
HSTGLST2
|
||
.LONG HGUYH,HGUYH ;FAT TOURIST
|
||
.LONG HGUYI ;FAT GREEN GUY
|
||
.LONG HGUYA2,HGUYA2 ;BIKINI
|
||
.LONG HGUYB2,HGUYB2
|
||
.LONG HGUYC2,HGUYC2
|
||
.LONG HGUYD2 ;GOLD REPORTER GUY
|
||
.LONG HGUYE2,HGUYE2 ;FEMALE REPORTER
|
||
.LONG HGUYF2 ;GUY WATCHING (YELLOW TREK SHIRT)
|
||
.LONG HGUYG2,HGUYG2,HGUYG2 ;CAMERA MAN
|
||
|
||
HGUYG2 .LONG SHCAKLDD1 ;CAMER MAN
|
||
.WORD 4
|
||
.LONG SHCAKLDD2
|
||
.WORD 4
|
||
.LONG SHCAKLDD1
|
||
.WORD 4
|
||
.LONG SHCAKLDD2
|
||
.WORD 4
|
||
.LONG SHCAKLDD1
|
||
.WORD 4
|
||
.LONG SHCAKLDD2
|
||
.WORD 4
|
||
.LONG SHCAKLDD1
|
||
.WORD 4
|
||
.LONG SHCAKLDD3
|
||
.WORD 60
|
||
.LONG SHCAKLDD2
|
||
.WORD 6
|
||
.LONG SHCAKLDD1
|
||
.WORD 6
|
||
.LONG SHCAKLDD2
|
||
.WORD 6
|
||
.LONG SHCAKLDD1
|
||
.WORD 6
|
||
.LONG SHCAKLDD2
|
||
.WORD 6
|
||
.LONG SHCAKLDD1
|
||
.WORD 6
|
||
.LONG SHCAKLDD2
|
||
.WORD 90
|
||
.LONG SHCAKLDD3
|
||
.WORD 40
|
||
.LONG 0
|
||
|
||
HGUYA2 .LONG SCHAKLDA1
|
||
.WORD 4
|
||
.LONG SCHAKLDA2
|
||
.WORD 4
|
||
.LONG SCHAKLDA1
|
||
.WORD 4
|
||
.LONG SCHAKLDA2
|
||
.WORD 4
|
||
.LONG SCHAKLDA1
|
||
.WORD 4
|
||
.LONG SCHAKLDA2
|
||
.WORD 4
|
||
.LONG SCHAKLDA1
|
||
.WORD 4
|
||
.LONG SCHAKLDA3
|
||
.WORD 60
|
||
.LONG SCHAKLDA2
|
||
.WORD 6
|
||
.LONG SCHAKLDA1
|
||
.WORD 6
|
||
.LONG SCHAKLDA2
|
||
.WORD 6
|
||
.LONG SCHAKLDA1
|
||
.WORD 6
|
||
.LONG SCHAKLDA2
|
||
.WORD 6
|
||
.LONG SCHAKLDA1
|
||
.WORD 6
|
||
.LONG SCHAKLDA2
|
||
.WORD 90
|
||
.LONG SCHAKLDA3
|
||
.WORD 40
|
||
.LONG 0
|
||
|
||
HGUYH .LONG SHACKX1 ;CAMERA ON TOURIST
|
||
.WORD 200
|
||
.LONG SHACKX2
|
||
.WORD 4
|
||
.LONG SHACKX3
|
||
.WORD 90
|
||
.LONG SHACKX2
|
||
.WORD 4
|
||
.LONG 0
|
||
HGUYI .LONG SHACKY1 ;FAT GREEN GUY
|
||
.WORD 200
|
||
.LONG SHACKY2
|
||
.WORD 4
|
||
.LONG SHACKY3
|
||
.WORD 4
|
||
.LONG SHACKY2
|
||
.WORD 4
|
||
.LONG SHACKY3
|
||
.WORD 4
|
||
.LONG SHACKY2
|
||
.WORD 4
|
||
.LONG SHACKY3
|
||
.WORD 4
|
||
.LONG SHACKY2
|
||
.WORD 4
|
||
.LONG SHACKY3
|
||
.WORD 4
|
||
.LONG SHACKY2
|
||
.WORD 4
|
||
.LONG SHACKY3
|
||
.WORD 4
|
||
.LONG SHACKY2
|
||
.WORD 4
|
||
.LONG SHACKY3
|
||
.WORD 100
|
||
.LONG SHACKY2
|
||
.WORD 4
|
||
.LONG 0
|
||
|
||
HGUYB2
|
||
.LONG SCHAKLDB4
|
||
.WORD 4
|
||
.LONG SCHAKLDB1
|
||
.WORD 4
|
||
.LONG SCHAKLDB2
|
||
.WORD 4
|
||
.LONG SCHAKLDB3
|
||
.WORD 50
|
||
.LONG SCHAKLDB2
|
||
.WORD 4
|
||
.LONG SCHAKLDB1
|
||
.WORD 4
|
||
.LONG SCHAKLDB4
|
||
.WORD 60
|
||
.LONG SCHAKLDB1
|
||
.WORD 6
|
||
.LONG SCHAKLDB2
|
||
.WORD 6
|
||
.LONG SCHAKLDB3
|
||
.WORD 6
|
||
.LONG SCHAKLDB2
|
||
.WORD 6
|
||
.LONG SCHAKLDB1
|
||
.WORD 6
|
||
.LONG SCHAKLDB2
|
||
.WORD 6
|
||
.LONG SCHAKLDB3
|
||
.WORD 30
|
||
.LONG SCHAKLDB2
|
||
.WORD 6
|
||
.LONG SCHAKLDB1
|
||
.WORD 6
|
||
.LONG SCHAKLDB4
|
||
.WORD 90
|
||
.LONG 0
|
||
HGUYD2 .LONG REPO1 ;GOLD REPORTER GUY
|
||
.WORD 1000
|
||
.LONG 0
|
||
HGUYE2 .LONG SHCAKLDE1 ;FEMALE REPORTER
|
||
.WORD 1000
|
||
.LONG 0
|
||
HGUYF2 .LONG SHCAKLDF1 ;GUY WATCHING
|
||
.WORD 1000
|
||
.LONG 0
|
||
HGUYC2 .LONG SHCAKLDC4
|
||
.WORD 4
|
||
.LONG SHCAKLDC3
|
||
.WORD 4
|
||
.LONG SHCAKLDC1
|
||
.WORD 4
|
||
.LONG SHCAKLDC2
|
||
.WORD 4
|
||
.LONG SHCAKLDC1
|
||
.WORD 4
|
||
.LONG SHCAKLDC3
|
||
.WORD 60
|
||
.LONG SHCAKLDC4
|
||
.WORD 90
|
||
.LONG SHCAKLDC3
|
||
.WORD 4
|
||
.LONG SHCAKLDC1
|
||
.WORD 4
|
||
.LONG SHCAKLDC2
|
||
.WORD 4
|
||
.LONG SHCAKLDC1
|
||
.WORD 4
|
||
.LONG SHCAKLDC3
|
||
.WORD 4
|
||
.LONG SHCAKLDC1
|
||
.WORD 4
|
||
.LONG SHCAKLDC2
|
||
.WORD 4
|
||
.LONG SHCAKLDC1
|
||
.WORD 4
|
||
.LONG SHCAKLDC3
|
||
.WORD 4
|
||
.LONG SHCAKLDC1
|
||
.WORD 4
|
||
.LONG SHCAKLDC2
|
||
.WORD 4
|
||
.LONG SHCAKLDC1
|
||
.WORD 4
|
||
.LONG SHCAKLDC3
|
||
.WORD 4
|
||
.LONG SHCAKLDC4
|
||
.WORD 60
|
||
.LONG 0
|
||
|
||
HGUYA .LONG NSDR1
|
||
.WORD 4
|
||
.LONG NSDR2
|
||
.WORD 4
|
||
.LONG NSDR3
|
||
.WORD 4
|
||
.LONG NSDR4
|
||
.WORD 4
|
||
.LONG NSDR3
|
||
.WORD 4
|
||
.LONG NSDR2
|
||
.WORD 4
|
||
.LONG NSDR1
|
||
.WORD 4
|
||
.LONG NSDR2
|
||
.WORD 4
|
||
.LONG NSDR3
|
||
.WORD 4
|
||
.LONG NSDR4
|
||
.WORD 4
|
||
.LONG NSDR3
|
||
.WORD 4
|
||
.LONG NSDR2
|
||
.WORD 4
|
||
.LONG NSDR1
|
||
.WORD 4
|
||
.LONG NSDR8
|
||
.WORD 5
|
||
.LONG NSDR9
|
||
.WORD 5
|
||
.LONG SWAVE1
|
||
.WORD 5
|
||
.LONG SWAVE3
|
||
.WORD 5
|
||
.LONG SWAVE1
|
||
.WORD 5
|
||
.LONG SWAVE2
|
||
.WORD 5
|
||
.LONG SWAVE1
|
||
.WORD 5
|
||
.LONG SWAVE3
|
||
.WORD 5
|
||
.LONG SWAVE1
|
||
.WORD 5
|
||
.LONG SWAVE2
|
||
.WORD 5
|
||
.LONG SWAVE1
|
||
.WORD 5
|
||
.LONG NSDR9
|
||
.WORD 5
|
||
.LONG NSDR8
|
||
.WORD 60
|
||
.LONG 0
|
||
|
||
HGUYB .LONG DOC1
|
||
.WORD 4
|
||
.LONG DOC2
|
||
.WORD 4
|
||
.LONG DOC3
|
||
.WORD 4
|
||
.LONG DOC4
|
||
.WORD 40
|
||
.LONG DOC3
|
||
.WORD 4
|
||
.LONG DOC2
|
||
.WORD 4
|
||
.LONG DOC1
|
||
.WORD 60
|
||
.LONG 0
|
||
HGUYC .LONG BGRL1
|
||
.WORD 8
|
||
.LONG BGRL2
|
||
.WORD 8
|
||
.LONG BGRL1
|
||
.WORD 8
|
||
.LONG BGRL3
|
||
.WORD 8
|
||
.LONG BGRL1
|
||
.WORD 8
|
||
.LONG BGRL2
|
||
.WORD 8
|
||
.LONG BGRL1
|
||
.WORD 8
|
||
.LONG BGRL3
|
||
.WORD 8
|
||
.LONG BGRL1
|
||
.WORD 8
|
||
.LONG BGRL2
|
||
.WORD 60
|
||
.LONG 0
|
||
HGUYD .LONG GN1
|
||
.WORD 4
|
||
.LONG GN2
|
||
.WORD 4
|
||
.LONG GN3
|
||
.WORD 4
|
||
.LONG GN4
|
||
.WORD 4
|
||
.LONG GN5
|
||
.WORD 4
|
||
.LONG GN6
|
||
.WORD 4
|
||
.LONG GN5
|
||
.WORD 4
|
||
.LONG GN4
|
||
.WORD 4
|
||
.LONG GN3
|
||
.WORD 4
|
||
.LONG GN2
|
||
.WORD 4
|
||
.LONG GN1
|
||
.WORD 60
|
||
.LONG 0
|
||
|
||
|
||
;
|
||
;O_ITEMS:
|
||
;;A2=# OF CASH ITEMS TO CREATE ON SCREEN
|
||
; CREATE0 SENDR
|
||
; CREATE0 SENDR2
|
||
; RETS
|
||
;O_ITEMS2:
|
||
;;A2=# OF CASH ITEMS TO CREATE ON SCREEN
|
||
; CREATE0 SENDR3
|
||
; CREATE0 SENDR3
|
||
; RETS
|
||
;SENDR2 SLEEPK 1
|
||
;SENDR SLEEP 01B0H+90
|
||
;SENDR3 MOVI 028H,A9 ;28
|
||
; MOVI 023H,B0
|
||
; MOVI 0D8H,B1
|
||
; CALLA RANGRAND
|
||
; MOVE A0,A10 ;A10=UPLFT X OF AREA
|
||
; MOVI 02DH,B0
|
||
; MOVI 0A4H,B1
|
||
; CALLA RANGRAND
|
||
; MOVE A0,A11 ;A11=UPLFT Y OF AREA
|
||
;
|
||
;OH2 ;CREATE A BUNCH OF THEM
|
||
; CREATE CSHPID,ANITEM
|
||
; SLEEPK 1
|
||
; DSJNE A9,OH2
|
||
; DIE
|
||
;
|
||
|
||
;ANITEM:
|
||
;;AMINE IS CALLED AT THE START OF A WAVE TO PLACE X # OF HULKS ON SCREEN
|
||
;;AT THE BEGINNING OF A WAVE
|
||
; MOVI 0,B0
|
||
; MOVI 04CH,B1
|
||
; CALLA RANGRAND
|
||
; ADD A11,A0
|
||
; MOVE A0,A1
|
||
;
|
||
; MOVI 0,B0
|
||
; MOVI 074H,B1
|
||
; CALLA RANGRAND
|
||
; ADD A10,A0
|
||
; SLL 16,A0
|
||
; SLL 16,A1
|
||
;
|
||
;;A0=X,A1=Y
|
||
;;A0 & A1 ARE SET UP
|
||
;;ADD IN OFFSETS FOR THIS PARTICULAR ARENA
|
||
; MOVE @GAMSTATE,A2
|
||
; CMPI INAMODE,A2
|
||
; JREQ ADMD
|
||
; MOVE @WAVEYX,A2,L
|
||
;;A2=PACKED OFFSETS
|
||
; MOVX A2,A3
|
||
; SLL 16,A3
|
||
; ADD A3,A0 ;ADJUSTED A0 XVAL!
|
||
; ANDI 0FFFF0000H,A2
|
||
; ADD A2,A1 ;ADJUSTED A1 YVAL!
|
||
;ADMD CALLR IH2 ;INIT HULK (BEGIN_OBJ)
|
||
; CALLA BEGINOBJ2
|
||
;WAIT
|
||
; MOVI 4*60-30,A0
|
||
; SUB A9,A0
|
||
; CALLA PRCSLP
|
||
;
|
||
;;BLINK
|
||
;;A8=ICON IMAGE PTR
|
||
; MOVE @HALT,A0
|
||
; JRNZ WAIT
|
||
;
|
||
; MOVK 7,A10
|
||
;;ABOUT 1 SECOND OF BLINK
|
||
;BK
|
||
; MOVE A8,A0
|
||
; CALLA OBJOFF
|
||
; SLEEP 5
|
||
; MOVE A8,A0
|
||
; CALLA OBJON
|
||
; SLEEP 5
|
||
; DSJS A10,BK
|
||
; SLEEP 30
|
||
; MOVE A8,A0
|
||
; CALLA DELOBJ ;ICONS NOW GONE FOREVER!
|
||
; DIE
|
||
;
|
||
;IH2:
|
||
; MOVE @CIRCUIT,A2
|
||
; CMPI 2,A2
|
||
; JRNZ IHJ
|
||
; MOVE @MCON,A4
|
||
; JRNZ IHJ
|
||
; MOVK 4,A2
|
||
; JRUC IHJJ
|
||
;IHJ
|
||
; MOVB @TMP,A2
|
||
; INC A2
|
||
; MOVB A2,@TMP
|
||
; ANDI 03H,A2
|
||
;IHJJ SLL 5,A2
|
||
; ADDI GTBL,A2
|
||
; MOVE *A2,A2,L
|
||
; MOVI 99,A3 ;69
|
||
; MOVI DMAWNZ,A4 ;NON-ZERO VALUE
|
||
; MOVI CLSNEUT|TYPICON|SUBCSHI,A5
|
||
; CLR A6
|
||
; CLR A7
|
||
; RETS
|
||
;
|
||
;GTBL .LONG PRZ1,PRZ2,PRZ3,PRZ1,KEY
|
||
; .REF BEGINOBJ2,WAVEYX,GAMSTATE,DELPAL,MIN_LIT,WAVE
|
||
; .REF GET_VALID_XY,GET_WVADDR,FRANIM,RANGRAND
|
||
; .REF OBJON,OBJOFF,HALT,CIRCUIT,STATUS,MCON
|
||
; .DEF O_MINE,EXPMINE,O_ITEMS,O_ITEMS2
|
||
; .BSS TMP,8
|
||
;
|
||
;BOLTHF .LONG BOLTA
|
||
; .WORD 3
|
||
; .LONG BOLTB
|
||
; .WORD 3
|
||
; .LONG BOLT1
|
||
; .WORD 3
|
||
; .LONG BOLT2
|
||
; .WORD 3
|
||
; .LONG BOLT3
|
||
; .WORD 3
|
||
; .LONG BOLT1
|
||
; .WORD FLIPBITS|3,M_FLIPH
|
||
; .LONG BOLT2
|
||
; .WORD 3
|
||
; .LONG BOLT3
|
||
; .WORD 3
|
||
; .LONG BOLT3
|
||
; .WORD FLIPBITS|3,M_FLIPV
|
||
; .LONG BOLT2
|
||
; .WORD 3
|
||
; .LONG BOLT1
|
||
; .WORD 3
|
||
; .LONG 0
|
||
;FAKER SLEEP 40
|
||
; CLR A0
|
||
; MOVE A0,*A8(OXVEL),L
|
||
; MOVE A0,*A8(OYVEL),L
|
||
; DIE
|
||
|
||
|
||
|
||
|
||
|
||
|
||
.END
|
||
|