2789 lines
50 KiB
NASM
2789 lines
50 KiB
NASM
**************************************************************
|
||
*
|
||
* Software: Mark Turmell
|
||
* Initiated: 3/28/91
|
||
*
|
||
* Modified: !
|
||
*
|
||
* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC.
|
||
*
|
||
*.Last mod - 1/9/92 18:40
|
||
**************************************************************
|
||
.FILE 'LAYER.ASM'
|
||
.TITLE 'TOTAL CARNAGE GAME PROGRAM'
|
||
.WIDTH 132
|
||
.OPTION B,D,L,T
|
||
.MNOLIST
|
||
|
||
|
||
.INCLUDE "MPROC.EQU" ;MPROC EQUATES
|
||
.INCLUDE "DISP.EQU" ;DISPLAY PROC. EQUATES
|
||
.INCLUDE "\VIDEO\SYS\SYS.INC" ;Z UNIT SYSTEM EQUATES
|
||
.INCLUDE "\VIDEO\SYS\MACROS.HDR" ;MACROS DEFINITIONS
|
||
.INCLUDE "IMGTBL.GLO"
|
||
.INCLUDE "GAME.EQU"
|
||
|
||
;
|
||
;SOUNDS EXTERNAL
|
||
;
|
||
.REF ALTEXP4,MECH1,ALTXP1A,AGLSEXP,GLSEXP,MTING,ONESNDOVR
|
||
|
||
;SYMBOLS EXTERNALLY DEFINED
|
||
;
|
||
.REF GETSND,GETCOS,GETSIN,CLNICN,STATUS,SHK_ON
|
||
.REF DO_DIFF2,RANDOM,INTO12,RANDPER,RANGRAND,SCRTSTG,FRANIM,WFLG
|
||
.REF GET_WVADDR,HALT,ENEMY_RECT,PCNT,PIT2,DO_PUNISH,GPALOBJ
|
||
.REF SCORE_IT,FAME4,FAME2,FAME3,FLASHME,TBLST,FIREEXP,SHAKER
|
||
.REF missile_firexy,GETFPAL,SCRADD2,P1DATA,P2DATA,WAVE,FIXEDA
|
||
.REF PLYROBJS,FRANIMQ,RUNIN,LOWZ,SBOMB,missile_firexy_slow
|
||
.ref RNDRNG0
|
||
;
|
||
;SYMBOLS DEFINED IN THIS FILE
|
||
;
|
||
.DEF SPAWN_LYR,MAXLYR,LYR_CNT,KILL_LY,YKIL_RNG,SENDGRN,SENDGRN2
|
||
.DEF FLAME_LAY,YKIL_LAY,LAY_EXP,PHASE1,LHLPS
|
||
.DEF XVL,YVL,STRT_ALAY,BIGBLU,SPAWN_MISL
|
||
.DEF DOYV1,DOYV,DOYVP,BOLTS,HLPON,LSHIT,LSDMG
|
||
;
|
||
;UNINITIALIZED RAM DEFINITIONS
|
||
;
|
||
.BSS LYR_CNT,16 ;TOTAL TANKS ON SCREEN
|
||
.BSS TNK_DN,16
|
||
.BSS MAXLYR,16 ;MAX NUMBER OF TANKS ALLOWED ON SCRN
|
||
.BSS PTMP,16
|
||
.BSS TEMP,32
|
||
;
|
||
;EQUATES FOR THIS FILE
|
||
;
|
||
;TANK DATA STRUCTURE
|
||
;
|
||
CNTR .EQU PDATA ;DELAY FOR OID SWAPPING
|
||
SPDY .EQU PDATA+16
|
||
DIR .EQU PDATA+32 ;UHW OBJECT DIRECTION
|
||
;MYPLYR .EQU PDATA+48 ;UHW PLAYER 1 OR 2 FIRED ME
|
||
SK_DIR .EQU PDATA+64 ;SEEK DIR FOR SPIN
|
||
LEVEL .EQU PDATA+80 ;DIFFICULTY LEVEL FOR SPEEDS ETC.
|
||
HSPD .EQU PDATA+96
|
||
H2SPD .EQU PDATA+128
|
||
VSPD .EQU PDATA+160
|
||
V2SPD .EQU PDATA+192
|
||
TOTMN .EQU PDATA+224 ;UHW
|
||
WAY01 .EQU PDATA+240 ;UHW
|
||
ABSRB .EQU PDATA+256 ;UHW
|
||
;ABSRB IS DEFINED IN FIEND.ASM
|
||
CFLAGS .EQU PDATA+272 ;UHW CONTROL FLAGS FOR OBJECT
|
||
MYPATRN .EQU PDATA+288 ;UHL PATTERN LIST ADDRESS
|
||
KPANTOBJ .EQU PDATA+320 ;UHL ANTENNA IMG PNTR
|
||
LAYTMR .EQU PDATA+352 ;UHW
|
||
MRAM .EQU PDATA+368 ;UHL 32*POINTER TO RAM LIST
|
||
KPMRAM .EQU PDATA+400 ;UHL CALLA FREEOBJ WITH THIS LATER
|
||
DIS .EQU PDATA+432 ;UHW OBJECT DISTANCE COUNT
|
||
MYANT .EQU PDATA+448 ;UHL ANTENNA PROC POINTER
|
||
|
||
;
|
||
;
|
||
;ANTENNA DATA STRUCTURE
|
||
;
|
||
|
||
;
|
||
;EQUATES
|
||
;
|
||
HSPEED .EQU 07000H ;INITIAL SPEED FOR MINE LAYER
|
||
HSPEED2 .EQU HSPEED*2 ;INITIAL SPEED FOR MINE LAYER
|
||
HITLAY .EQU 20*30
|
||
;
|
||
;EQUATES
|
||
;
|
||
MAXHITS .EQU 10 ;HELPER BLADE DIFFICULTY SETTING
|
||
ADLTA .EQU 0381BH ;(411775/(160/2))
|
||
;
|
||
; LASER/BLADES DATA STRUCTURE
|
||
;
|
||
PTRX .EQU PDATA ;UHW ;LAST X
|
||
PTRY .EQU PDATA+16 ;UHW ;LAST Y
|
||
;ANIMTIK .EQU PDATA+32 ;UHL ;FRAME SLEEP TIME
|
||
THETA .EQU PDATA+64 ;SHL ;CURRENT PROGRESSION
|
||
DELTA .EQU PDATA+96 ;SHL ;DELTA ANGLE
|
||
LEG .EQU PDATA+128 ;UHL LEG OF PLAYER WHO COLLECTED ME
|
||
HITS .EQU PDATA+160 ;UHW ;HIT CNTR
|
||
|
||
.TEXT
|
||
HELP .WORD >F97E,>24,>80C1,0 ;"HELP"
|
||
HLPON:
|
||
MMTM SP,A1,A7,A9,A10
|
||
; MOVE A0,A9 ;A9=LEG
|
||
MOVE *A0(OPLINK),A0,L
|
||
MOVE *A0(LEG_PTR),A9,L
|
||
MOVE *A0(LSRPTR),A0,L
|
||
JRZ SKP
|
||
MOVE *A0(OPLINK),A0,L
|
||
CLR A1
|
||
MOVE A1,*A0(HITS)
|
||
JRUC SKP2
|
||
SKP CREATE0 LASER
|
||
SKP2 CALLA CLNICN
|
||
MOVI GETSND,A0
|
||
CALLA ONESND
|
||
MMFM SP,A1,A7,A9,A10
|
||
RETS
|
||
|
||
; DO LASER MOVEMENT LOGIC
|
||
LASER:
|
||
;A9=LEG IMG PNTR OF PLAYER WHO TOUCHED ME
|
||
CLR A0
|
||
MOVE A0,*A13(MYPLYR) ;THIS BLADE WILL NOT SCORE PTS
|
||
;VEHICHLES USE THE BLADE OID FOR KILLING GRUNTS, ETC.
|
||
;SO THE HELPER BLADE WILL NOT SCORE PTS FOR THE PLAYER
|
||
CLR A0
|
||
MOVE A0,*A13(HITS)
|
||
MOVI ADLTA,A0
|
||
MOVE A0,*A13(DELTA),L
|
||
MOVI INITAB,A14
|
||
CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE
|
||
CALLA STFOBJ ;STUFF OBJECT DATA
|
||
MOVE A13,*A0(OPLINK),L
|
||
CALLA ADJSTWTL ;PUT US IN THE WORLD
|
||
CALLA INSOBJ ;INSERT OBJECT INTO LIST
|
||
MOVE A0,A10
|
||
;A9=CORRECT LEG PTR
|
||
MOVE A9,*A13(LEG),L
|
||
;A7=A7 ALREADY?
|
||
MOVE *A9(OPLINK),A7,L ;LEGS HAVE SAME OPLINK AS TORSO!
|
||
;A7 NOW EQUALS TORSO PROC OF PLAYER WHO PICKED UP HELPER ICON
|
||
MOVE A0,*A7(LSRPTR),L
|
||
;THIS OKAY?
|
||
MOVE A9,A8
|
||
CALLA GETANIXY ;Y/X POSITION RETURNED IN A2,A3
|
||
MOVE A10,A8
|
||
ADDI [3,0],A2
|
||
MOVE A2,*A8(OYVAL),L
|
||
SUBI [10,0],A3
|
||
MOVE A3,*A8(OXVAL),L
|
||
CLR A0
|
||
MOVE A0,*A13(PTRX),W ;OLD X,Y VALUES
|
||
MOVE A0,*A13(PTRY),W
|
||
MOVE A0,*A13(THETA),L
|
||
;
|
||
ENCIRCLE:
|
||
; MAKE LASER MOVE IN A CIRCLE AROUND PLAYER
|
||
|
||
CALLR ALIGNXY ;KEEP OBJECT ALIGNED WITH PLAYER
|
||
MOVE *A13(THETA),A2,L ;PROGRESSIVE THETA
|
||
MOVE *A13(DELTA),A0,L ;NEXT DELTA ANGLE
|
||
ADD A2,A0
|
||
CALLA GETCOS
|
||
MOVE A0,A11
|
||
MOVK 3,A0
|
||
MPYS A0,A11
|
||
MOVE A14,*A13(THETA),L
|
||
MOVE A14,A0
|
||
CALLA GETSIN
|
||
MOVE A0,A3
|
||
MOVK 3,A0
|
||
MPYS A0,A3
|
||
MOVE A3,A10
|
||
MOVE *A8(OXVAL),A3,L
|
||
MOVE *A8(OYVAL),A4,L
|
||
ADD A11,A3
|
||
ADD A10,A4
|
||
MOVE A3,*A8(OXVAL),L
|
||
MOVE A4,*A8(OYVAL),L
|
||
SLOOP 1,ENCIRCLE
|
||
LASERDIE:
|
||
MOVE A11,*A8(OXVEL),L
|
||
MOVE A10,*A8(OYVEL),L
|
||
FLYER:
|
||
CALLA SCRTST
|
||
JRNZ LSER
|
||
SLOOP 30,FLYER
|
||
LSER jauc DELOBJDIE
|
||
|
||
ALIGNXY:
|
||
; KEEP LASER WITHIN X CENTERPOINT OF PLAYER
|
||
; PARMS:
|
||
;
|
||
; A8 = PTR TO PLINDX
|
||
;
|
||
MOVE *A13(PTRX),A4,W ;OLD X,Y VALUES
|
||
MOVE *A13(PTRY),A5,W
|
||
MOVE A8,A10
|
||
MOVE *A13(LEG),A8,L
|
||
CALLA GETANIXY ;Y/X POSITION RETURNED IN A2,A3
|
||
MOVE A10,A8
|
||
SWAP A2,A3
|
||
SRL 16,A2
|
||
SRL 16,A3
|
||
MOVE A4,A4
|
||
JRZ PK
|
||
DIFF:
|
||
CMP A4,A2
|
||
JREQ DOY
|
||
JRGT ADDX ;NEW X POS > OLD X POS
|
||
SUBX:
|
||
SUB A2,A4
|
||
MOVE *A8(OXPOS),A6
|
||
SUB A4,A6
|
||
MOVE A6,*A8(OXPOS)
|
||
JRUC DOY
|
||
ADDX:
|
||
SUB A2,A4
|
||
NEG A4
|
||
MOVE *A8(OXPOS),A6
|
||
ADD A4,A6
|
||
MOVE A6,*A8(OXPOS)
|
||
DOY:
|
||
CMP A5,A3
|
||
JREQ PK ;NO DIFFERENCES IN X,Y BYE!
|
||
JRGT ADDY ;NEW Y POS > OLD Y POS
|
||
SUBY:
|
||
SUB A3,A5
|
||
MOVE *A8(OYPOS),A6
|
||
SUB A5,A6
|
||
MOVE A6,*A8(OYPOS)
|
||
JRUC PK
|
||
ADDY:
|
||
SUB A3,A5
|
||
NEG A5
|
||
MOVE *A8(OYPOS),A6
|
||
ADD A5,A6
|
||
MOVE A6,*A8(OYPOS)
|
||
PK:
|
||
MOVE A2,*A13(PTRX),W
|
||
MOVE A3,*A13(PTRY),W
|
||
RETS
|
||
|
||
|
||
LSDMG:
|
||
MMTM SP,A1,A13
|
||
MOVE *A8(OPLINK),A13,L ;GET PROCESS ID BACK
|
||
MOVE *A13(HITS),A1
|
||
INC A1
|
||
MOVE A1,*A13(HITS)
|
||
CMPI MAXHITS,A1
|
||
JRNZ HO
|
||
;BLADE TO FLY OFF
|
||
;RESET HERE
|
||
CALLR LSHIT
|
||
HO MMFM SP,A1,A13
|
||
RETS
|
||
LSHIT:
|
||
;CALLED FROM COLLISION ROUTINE
|
||
;ALSO CALLED FROM ROBO WHEN PLAYER DIES
|
||
;A8=HELPER IMG PNTR
|
||
MMTM SP,A0,A7,A13
|
||
;PUSHING ENOUGH STUFF HERE?
|
||
MOVE *A8(OPLINK),A13,L ;GET PROCESS ID BACK
|
||
;HELPER TO FLY OFF
|
||
;RESET HERE
|
||
MOVE *A13(LEG),A0,L ;GET LEG I SURROUND
|
||
MOVE *A0(OPLINK),A0,L ;GET PLAYER PROC
|
||
CLR A7
|
||
MOVE A7,*A0(LSRPTR),L ;ZERO PLAYER PROC LASER PNTR
|
||
MOVE A13,A0
|
||
MOVI LASERDIE,A7
|
||
CALLA PUTA7 ;THIS HLPR WILL NOW WAKE UP AT A7 ADDR
|
||
MMFM SP,A0,A7,A13
|
||
RETS
|
||
|
||
INITAB:
|
||
.LONG 0,0,BLADE
|
||
.WORD 158,DMAWNZ,CLSPLYR|TYPHLPR
|
||
.LONG 0,0
|
||
BOLTS
|
||
MOVK 10,A10
|
||
BLT1 CREATE FUTUREPID,ONEBOLT
|
||
DSJS A10,BLT1
|
||
MOVE @WORLDTLX+16,A10
|
||
ADDI 70,A10
|
||
;A10=TARGET FOR CHANGING @RUNIN TO 1
|
||
SETR SLEEPK 20
|
||
MOVE @WORLDTLX+16,A0,L
|
||
CMP A10,A0
|
||
JRLT SETR
|
||
MOVK 1,A0
|
||
MOVE A0,@RUNIN
|
||
DIE
|
||
ONEBOLT SLEEPK 10
|
||
MOVE @WORLDTLX+16,A0
|
||
CMPI 580H,A0
|
||
JANC SUCIDE
|
||
MOVI BOLTX-16,A1
|
||
MOVE A10,A2
|
||
SLL 4,A2
|
||
ADD A2,A1
|
||
MOVE *A1,A1,W
|
||
CMP A1,A0
|
||
JRNC ONEBOLT
|
||
ADDI 400,A0
|
||
CMP A1,A0
|
||
JRC ONEBOLT
|
||
;BOLT IS ON SCRN
|
||
|
||
ADDI BOLTNUM-16,A2
|
||
MOVE *A2,A11,W
|
||
MOVE A1,A0
|
||
SLL 16,A0
|
||
MOVE A0,A9
|
||
MOVI [559H,0],A1
|
||
MOVI VBOLT1,A2
|
||
MOVI 150,A3
|
||
MOVI DMAWNZ,A4
|
||
MOVI CLSNEUT|TYPBOLT,A5
|
||
CLR A6
|
||
CLR A7
|
||
CALLA BEGINOBJ2
|
||
CREATE0 DOIT
|
||
MOVI ELECSND1,A0
|
||
CALLA ONESND
|
||
|
||
MOVE A9,A0
|
||
MOVI [5B2H,0],A1
|
||
MOVI VBOLT1,A2
|
||
MOVI 150,A3
|
||
MOVI DMAWNZ,A4
|
||
MOVI CLSNEUT|TYPBOLT,A5
|
||
CLR A6
|
||
CLR A7
|
||
CALLA BEGINOBJ2
|
||
MOVI ELECSND2,A0
|
||
CALLA ONESND
|
||
BL1 MOVI BOLTVF,A9
|
||
JSRP FRANIMQ
|
||
DSJS A11,BL1
|
||
MOVI ELECSND2,A0
|
||
CALLA ONESND
|
||
MOVE A8,A0
|
||
CALLA DELOBJ
|
||
MOVE A10,A0
|
||
SLL 4,A0
|
||
ADDI SLPTIM-16,A0
|
||
MOVE *A0,A0,W
|
||
CALLA PRCSLP
|
||
JRUC ONEBOLT
|
||
DOIT
|
||
MOVI BOLTVF,A9
|
||
JSRP FRANIMQ
|
||
DSJS A11,DOIT
|
||
MOVE A8,A0
|
||
CALLA DELOBJ
|
||
DIE
|
||
|
||
ELECSND1
|
||
.WORD >F0E5,>18,>811E,0
|
||
ELECSND2
|
||
.WORD >F5E5,20,>811F,0
|
||
|
||
BOLTNUM .WORD 2,5,5,4,2,5,5,2,5,1
|
||
SLPTIM .WORD 45,72,45,60,70,45,46,41,53,69
|
||
BOLTX .WORD 0E3H,017EH,1ffh,25CH,32AH,3B9H,42EH,4BBH,584H,59CH
|
||
BOLTVF
|
||
.LONG VBOLT1
|
||
.WORD FLIPBITS|3,0
|
||
.LONG VBOLT2
|
||
.WORD 3
|
||
.LONG VBOLT3
|
||
.WORD 3
|
||
.LONG VBOLT1
|
||
.WORD FLIPBITS|3,M_FLIPH
|
||
.LONG VBOLT2
|
||
.WORD 3
|
||
.LONG VBOLT3
|
||
.WORD 3
|
||
.LONG VBOLT1
|
||
.WORD FLIPBITS|3,M_FLIPV
|
||
.LONG VBOLT2
|
||
.WORD 3
|
||
.LONG VBOLT3
|
||
.WORD 3
|
||
.LONG VBOLT1
|
||
.WORD FLIPBITS|3,M_FLIPV|M_FLIPH
|
||
.LONG VBOLT2
|
||
.WORD 3
|
||
.LONG VBOLT3
|
||
.WORD 3
|
||
.LONG 0
|
||
|
||
DOYV1 ;FROM TOP OF SCRN DOWN
|
||
MOVI -3000H,A0 ;12
|
||
MOVE A0,*A8(OYVEL),L
|
||
SLEEPK 10
|
||
MOVI -1000H,A0 ;12
|
||
MOVE A0,*A8(OYVEL),L
|
||
SLEEPK 3
|
||
MOVI 5000H,A0 ;12
|
||
MOVE A0,*A8(OYVEL),L
|
||
SLEEPK 15
|
||
MOVI 0F000H,A0 ;12
|
||
MOVE A0,*A8(OYVEL),L
|
||
|
||
SLEEPK 015H
|
||
MOVI 016000H,A0 ;12
|
||
MOVE A0,*A8(OYVEL),L
|
||
SLEEPK 0CH
|
||
MOVI 01C000H,A0 ;12
|
||
MOVE A0,*A8(OYVEL),L
|
||
DIE
|
||
DOYV MOVI -8000H,A0 ;FROM RIGHT OF SCRN DOWN
|
||
MOVE A0,*A8(OYVEL),L
|
||
SLEEPK 15
|
||
MOVI -4000H,A0
|
||
MOVE A0,*A8(OYVEL),L
|
||
SLEEPK 15
|
||
MOVI 3000H,A0
|
||
MOVE A0,*A8(OYVEL),L
|
||
SLEEPK 15
|
||
MOVI 0C000H,A0
|
||
MOVE A0,*A8(OYVEL),L
|
||
SLEEPK 15
|
||
|
||
MOVI 15000H,A0
|
||
MOVE A0,*A8(OYVEL),L
|
||
DIE
|
||
|
||
DOYVP MOVI 0FFFE7000H,A0 ;FOR HULK JUMPING UP AND OUT OF PIT
|
||
MOVE A0,*A8(OYVEL),L
|
||
SLEEPK 18
|
||
|
||
MOVI 159,A0
|
||
MOVE A0,*A8(OZPOS)
|
||
SLEEPK 7
|
||
MOVI 0FFFF6000H,A0
|
||
MOVE A0,*A8(OYVEL),L
|
||
SLEEPK 15
|
||
|
||
MOVI 08000H,A0
|
||
MOVE A0,*A8(OYVEL),L
|
||
SLEEPK 7
|
||
MOVI 0F000H,A0
|
||
MOVE A0,*A8(OYVEL),L
|
||
SLEEPK 7
|
||
MOVI 15000H,A0
|
||
MOVE A0,*A8(OYVEL),L
|
||
DIE
|
||
LHLPS
|
||
MOVI HELP,A0
|
||
CALLA ONESND
|
||
SLEEP 40
|
||
MOVI HELP,A0
|
||
CALLA ONESND
|
||
SLEEP 40
|
||
MOVI HELP,A0
|
||
CALLA ONESND
|
||
SLEEP 40
|
||
MOVI HELP,A0
|
||
CALLA ONESND
|
||
DIE
|
||
PHASE1
|
||
CLR A1
|
||
MOVE A1,*A8(OXVEL),L
|
||
MOVE A1,*A8(OYVEL),L
|
||
DEC A9
|
||
SLL 5,A9
|
||
ADDI PLYROBJS,A9
|
||
MOVE *A9,A0,L
|
||
MOVE *A0(OYPOS),A2 ;A2=Y OF PLYR I HIT
|
||
MOVE *A0(OXPOS),A1 ;A1=X
|
||
MOVE *A8(OYPOS),A3 ;A3=THIS HULKS' Y
|
||
MOVE *A8(OXPOS),A4 ;A4=THIS HULKS' X
|
||
CMP A3,A2
|
||
RETS
|
||
|
||
SPAWN_MISL
|
||
;SPAWN MISL
|
||
MOVI EXCUSE,A0
|
||
CALLA ONESND
|
||
CREATE BOSSPID,SPM
|
||
RETS
|
||
SPM SLEEP 50
|
||
CALLA FIXEDA
|
||
CMPI 5,A10
|
||
JRNZ SPFZ
|
||
ADDI [-25,42],A9
|
||
;A8=CHOSEN RECTANGLE INFO
|
||
;A9=[Y,X] OF SPOT TO START FROM
|
||
;A10=DIRECTION
|
||
SPFZ
|
||
MOVI MISL,A2
|
||
CALLA GET_WVADDR
|
||
MOVE *A0(16),A1,W ;DEC WAVE RAM CNT FOR THIS MISL GROUP
|
||
DEC A1
|
||
MOVE A1,*A0(16),W
|
||
MOVI msllnchsnd,A0
|
||
CALLA ONESND
|
||
CLR A8
|
||
movx a9,a8
|
||
SRL 16,a9
|
||
MOVI 300,A11
|
||
SLL 3,A10
|
||
ADDI DTBL,A10
|
||
MOVB *A10,A10
|
||
|
||
;A8=X, A9=Y, A10=Dir, A11=Fuel
|
||
JAUC missile_firexy ;START ONE MISL
|
||
|
||
|
||
|
||
|
||
********************************
|
||
* Launch slow tough missile against good player (Process)
|
||
* A9=*Plyr leg obj
|
||
|
||
.DEF SPAWN_MISL_GOOD
|
||
SPAWN_MISL_GOOD
|
||
|
||
movi 60*4,a0
|
||
calla RNDRNG0
|
||
addk 30,a0
|
||
calla PRCSLP ;Sleep random
|
||
MOVI EXCUSE,A0
|
||
CALLA ONESND
|
||
SLEEP 60
|
||
MOVI msllnchsnd,A0
|
||
CALLA ONESND
|
||
MOVE A9,A7 ;*Plyr
|
||
MOVE @WORLDTLX+16,A8 ;X
|
||
MOVE @WORLDTLY+16,A9 ;Y
|
||
addi 200,a8
|
||
addi 260,a9
|
||
clr a10 ;Dir
|
||
movi 500,a11 ;Fuel
|
||
jauc missile_firexy_slow
|
||
|
||
|
||
|
||
;msllnchsnd .word >f290,10,>812C,0 ;Missile launch
|
||
;msllnchsnd .word >f290,10,>80b6,0 ;Missile launch
|
||
msllnchsnd .word >f290,10,>80b9,0 ;Missile launch
|
||
EXCUSE .word >f9F0,10,>814F,0 ;EXCUSE ME
|
||
|
||
DTBL .BYTE 0,0,0,8,0,16,0,24,0
|
||
.EVEN
|
||
|
||
|
||
|
||
KILL_LY
|
||
;A8=MINE LAYER IMAGE TO SMART BOMB
|
||
;A9=P1DATA OR P2DATA FOR SCORE UPDATE
|
||
;SMART BOMB ENTRY
|
||
;ENTER HERE WITH SMART BOMB
|
||
CREATE0 HSMRT
|
||
MOVI CLSDEAD,A0
|
||
MOVE A0,*A8(OID)
|
||
MOVE *A8(OPLINK),A0,L
|
||
MOVI NBLOWME2,A7
|
||
CLR A1
|
||
CALLA XFERPROC
|
||
CLR A0
|
||
MOVE A0,*A8(OXVEL),L
|
||
MOVE A0,*A8(OYVEL),L
|
||
RETS
|
||
HSMRT
|
||
MOVE A9,A2
|
||
;A2=P1DATA OR P2DATA
|
||
MOVI HLKPT,A1 ;AMOUNT OF SCORE FOR MINE LAYER!
|
||
CALLA SCRADD2 ;DO IT!
|
||
MOVE *A8(OYPOS),A2
|
||
ADDK 20,A2 ;A2=Y OFFSET
|
||
MOVE A2,*A8(OYPOS)
|
||
MOVI 300,A0 ;200
|
||
MOVE A0,*A8(OZPOS)
|
||
MOVI XBOOM2,A9 ;BOOM3 CHANGES PALETTE TO EXPLOSION!
|
||
jauc FRQDELDIE
|
||
|
||
XBOOM2
|
||
.LONG XPLD1
|
||
.WORD NEWPALET|4
|
||
.LONG GRNBOOM
|
||
.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
|
||
|
||
|
||
FLAME_LAY
|
||
;MINE LAYER HIT BY BULLET
|
||
MMTM SP,A1,A2,A3,A7,A9,A10
|
||
PUSH A0
|
||
MOVI HITLAY,A3
|
||
CALLA DO_PUNISH
|
||
PULL A0
|
||
JRLT PFT
|
||
;KILL MINE LAYER!
|
||
;TURN OFF COLLISIONS FOR THIS MINE LAYER
|
||
;XFERPROC THIS MINE LAYER TO CODE WHICH TURNS ON SOME FLAMES
|
||
;THAT CODE WILL LET IT FLAME FOR AWHILE THEN PUT A FEW EXPLOSIONS
|
||
;ON TOP OF IT AND KILL EVERYTHING
|
||
;THAT CODE WILL ALSO EXPLODE ALL LAND MINES THIS MINE LAYER HAS LAYED DOWN
|
||
;A8=MINE LAYER
|
||
;
|
||
MOVE *A0(OPLINK),A0,L ;PLAYER PROCESS
|
||
MOVI LAYPT,A1
|
||
CALLA SCORE_IT ;SCORES SAME AS FIEND
|
||
MOVE *A8(OFLAGS),A4
|
||
ORI M_NOCOLL,A4 ;NO COLLISIONS
|
||
MOVE A4,*A8(OFLAGS)
|
||
MOVE *A8(OPLINK),A0,L
|
||
MOVI LAY_EXP,A7
|
||
CLR A1
|
||
CALLA XFERPROC
|
||
MMFM SP,A1,A2,A3,A7,A9,A10
|
||
RETS
|
||
PFT
|
||
;FLASH THIS MINE LAYER
|
||
MOVI 03F3F0000H,A9
|
||
CREATE0 FLASHME
|
||
MMFM SP,A1,A2,A3,A7,A9,A10
|
||
RETS
|
||
|
||
YKIL_RNG
|
||
;A8=MINE LAYER IMG PNTR
|
||
MMTM SP,A1,A2,A7
|
||
MOVE *A0(OPLINK),A0,L
|
||
MOVI P1DATA,A2
|
||
MOVE *A0(PNUM),A0
|
||
CMPI 1,A0
|
||
JREQ J5
|
||
MOVI P2DATA,A2
|
||
;A2=P1DATA OR P2DATA
|
||
J5 MOVI LAYPT,A1 ;AMOUNT OF SCORE
|
||
CALLA SCRADD2
|
||
JRUC CONT
|
||
|
||
YKIL_LAY
|
||
;KILL MINE LAYER BECAUSE OF COLLISION WITH RING OR TIME BOMB
|
||
;EXTER HERE FROM COLLISION ROUTINE - RINGS KILL MINE LAYER
|
||
;A8=MINE LAYER IMG PNTR
|
||
MMTM SP,A1,A2,A7
|
||
MOVE *A0(OPLINK),A0,L
|
||
MOVI LAYPT,A1
|
||
CALLA SCORE_IT
|
||
CONT
|
||
MOVE *A8(OFLAGS),A0
|
||
ORI M_NOCOLL,A0
|
||
MOVE A0,*A8(OFLAGS)
|
||
MOVE *A8(OPLINK),A0,L
|
||
MOVI LAY_EXP,A7 ;END OF MINE LAYER DEATH - NO FLAMES
|
||
CLR A1
|
||
CALLA XFERPROC
|
||
MMFM SP,A1,A2,A7
|
||
RETS
|
||
|
||
;
|
||
SPAWN_LYR:
|
||
;SPAWN TANK IS CALLED FROM 'WAVE OVERLORD' CODE WHICH DISPERSES
|
||
;BAD GUYS THROUGHOUT A WAVE
|
||
MOVE @HALT,A0
|
||
JRNZ TANK_OUT
|
||
MOVE @LYR_CNT,A2 ;MOVE BYTE (# TANKS ON SCRN) TO A2
|
||
MOVE @MAXLYR,A3
|
||
CMP A3,A2 ;TANKS MAXED OUT?
|
||
JRGE TANK_OUT ;
|
||
CREATE LAYPID,ATNK ;START ONE MINE LAYER
|
||
TANK_OUT:
|
||
RETS
|
||
|
||
LOCK LOCKUP
|
||
CLRTNK
|
||
MOVE A0,*A13(MRAM),L ;CALL FREEOBJ LATER
|
||
MOVE A0,*A13(KPMRAM),L
|
||
CLR A0
|
||
MOVE A0,*A13(MYPLYR) ;FOR WHEN LAYER KILLS GRUNTS!
|
||
MOVE A0,*A13(SPDY)
|
||
MOVE A0,*A13(TOTMN)
|
||
MOVE A0,*A13(ABSRB)
|
||
MOVE A0,*A13(CFLAGS)
|
||
MOVE A0,*A13(SK_DIR)
|
||
MOVK 25,A0
|
||
MOVE A0,*A13(CNTR)
|
||
MOVE A0,*A13(LAYTMR)
|
||
RETS
|
||
STRT_ALAY ;A8=*MINE LAYER
|
||
MOVI CLSDEAD,A0
|
||
MOVE A0,*A8(OID)
|
||
; movi LAYPID,a0
|
||
; move a0,*a13(PROCID)
|
||
move a13,*a8(OPLINK),L
|
||
MOVI 2*60,B0 ;3
|
||
MOVI 18*60,B1 ;12
|
||
CALLA RANGRAND
|
||
CALLA PRCSLP
|
||
CALLA GETOBJ
|
||
JRZ LOCK ;NO FREE OBJECT SPACE
|
||
CALLR CLRTNK
|
||
;A9=[Y,X] OF SPOT TO START FROM
|
||
;A10=DIRECTION
|
||
;8 1 2
|
||
;7 3
|
||
;6 5 4
|
||
MOVE *A8(OXPOS),A9
|
||
SUBK 15,A9
|
||
MOVE *A8(OYVAL),A1,L
|
||
MOVY A1,A9
|
||
|
||
|
||
MOVE *A8(OIMG),A0,L
|
||
MOVE *A0(32),A0,L ;DATA ADDR
|
||
MOVI MTNK6,A1
|
||
MOVE *A1(64),A1,L ;DATA ADDR
|
||
CMP A0,A1
|
||
JRZ SG1
|
||
MOVI MTNK9,A1
|
||
JRUC SG2
|
||
SG1
|
||
;LEFT/RGT GUN PIT
|
||
;TURN ON GUNNER DUDE
|
||
MOVI MTNK6,A1
|
||
SG2 MOVE A1,*A8(OIMG),L
|
||
|
||
|
||
MOVK 5,A10
|
||
MOVE *A8(OIMG),A0,L
|
||
CMPI MTNK9,A0
|
||
JRNZ JIN
|
||
MOVK 7,A10
|
||
MOVE *A8(OFLAGS),A0
|
||
BTST B_FLIPH,A0
|
||
JRZ JIN
|
||
MOVK 3,A10
|
||
JIN MOVK 2,A1
|
||
MOVE A1,*A13(LEVEL),W
|
||
CALLA DELOBJA8
|
||
CALLR JINHR ;TURN ON IMG, SET LOCATION, DIRECTION
|
||
MOVE @LYR_CNT,A0
|
||
INC A0
|
||
MOVE A0,@LYR_CNT
|
||
JRUC ATNK2
|
||
ATNK:
|
||
;YES A NEW MINE LAYER WILL APPEAR
|
||
;UPDATE WAVE_INFO RAM TABLE TO REFLECT THIS NEW ENTRY!
|
||
;THIS TANK WAS SPAWNED FROM 'WAVE OVERLORD' CODE
|
||
CALLA GETOBJ
|
||
JRZ LOCK ;NO FREE OBJECT SPACE
|
||
CALLR CLRTNK
|
||
CALLR INIT_TNK ;TURN ON IMG, SET LOCATION, DIRECTION
|
||
CALLR SETUP_TNK ;INC CNT, SET DIR, SET DEATH FLAG, ETC
|
||
ATNK2 MOVI 500,A0
|
||
CALLA RANDPER
|
||
JRNC NORED
|
||
;RED MINE LAYER
|
||
MOVK 4,A0
|
||
MOVE A0,*A13(LAYTMR)
|
||
MOVI MTNKP2,A0 ;GRNTB,A0 ;GRNTP ;ALWAYS SOLDIER
|
||
CALLA GETFPAL ;GET A COLOR MAP ASSIGNMENT
|
||
MOVE A0,*A8(OPAL),W ;STORE THE NEW PALETTE
|
||
MOVI HSPEED2,A1 ;TANK SPEED
|
||
MOVE A0,*A13(SPDY)
|
||
JRUC ARED
|
||
|
||
NORED MOVI HSPEED,A1 ;TANK SPEED
|
||
ARED CALLA DO_DIFF2
|
||
|
||
CLR A0
|
||
move A0,*a8(OCONST)
|
||
MOVE *A13(DIR),A0
|
||
CALLA INTO12
|
||
CALLR GET_RUN ;GET FIRST FRANIM PNTR FOR
|
||
;THIS TANKS DIRECTION
|
||
|
||
;SELECT A RANDOM PATTERN FOR MINE LAYER ENTERING FROM THIS DIRECTION
|
||
MOVE *A13(DIR),A0
|
||
SLL 5,A0
|
||
ADDI PATLST,A0
|
||
MOVE *A0,A0,L
|
||
MOVE @PTMP,A1
|
||
INC A1
|
||
MOVE A1,@PTMP
|
||
ANDI 03H,A1
|
||
|
||
SLL 5,A1
|
||
ADD A1,A0
|
||
MOVE *A0,A0,L
|
||
MOVE *A0+,A1,W ;GET FIRST DISTANCE CNT
|
||
MOVE *A13(SPDY),A3
|
||
JRZ NOSPD0
|
||
;SPEEDY MINE LAYER
|
||
SRL 1,A1
|
||
NOSPD0
|
||
MOVE A0,*A13(MYPATRN),L
|
||
MOVE A1,*A13(DIS)
|
||
;
|
||
; LOOP TOP FOR TANKS
|
||
;
|
||
MOVE A13,A10
|
||
CREATE0 ANTENNA
|
||
MOVE A0,*A13(MYANT),L ;KEEP FOR WHEN MINE LAYER DIES
|
||
|
||
; MOVI MECH1,A0 ;MECHANICAL ARRIVAL SND
|
||
; CALLA ONESND
|
||
;BEEP BEEP HORN SND
|
||
|
||
LUP_TP:
|
||
;TOP OF TANK LOGIC
|
||
MOVE @HALT,A0
|
||
JRZ TMV
|
||
SLEEPK 1
|
||
JRUC LUP_TP
|
||
|
||
TMV
|
||
MOVE *A13(CNTR),A3
|
||
ANDI 07H,A3
|
||
DEC A3
|
||
JRNZ TMV3
|
||
;SWAP THIS MINE LAYER OID BETWEEN PLAYER/HELPER AND MINE LAYER
|
||
MOVK 1,A3
|
||
MOVI CLSPLYR|TYPHLPR|SUBLAY,A1
|
||
MOVE *A8(OID),A0
|
||
ANDI 0FFFFH,A0
|
||
CMPI CLSENMY|TYPLAYR,A0
|
||
JRZ TMV2
|
||
MOVK 3,A3
|
||
MOVI CLSENMY|TYPLAYR,A1
|
||
TMV2 MOVE A1,*A8(OID)
|
||
TMV3
|
||
MOVE A3,*A13(CNTR)
|
||
MOVE *A13(CFLAGS),A0
|
||
BTST 0,A0
|
||
JRZ NOSPN
|
||
;THIS TANK IS SPINNING, DO SPIN
|
||
MOVE *A13(SK_DIR),A1
|
||
MOVE *A13(DIR),A0,W
|
||
CALLR WAY
|
||
JRC DIT ;INC
|
||
;DEC=CLRC
|
||
CLR A1 ;MOVI 0,A1
|
||
MOVE A1,*A13(WAY01)
|
||
JRUC DIT0
|
||
DIT MOVK 1,A1
|
||
MOVE A1,*A13(WAY01)
|
||
DIT0
|
||
MOVE A0,*A13(DIR),W
|
||
CALLR GET_STAND ;DOES ANI OF CORRECT VIEW
|
||
MOVE *A13(SK_DIR),A1
|
||
MOVE *A13(DIR),A0,W
|
||
CMP A0,A1
|
||
JREQ GOODNEWS
|
||
;ANI IN NEW STAND/SPIN DIR
|
||
SLEEPK 4
|
||
JRUC LUP_TP
|
||
|
||
GOODNEWS:
|
||
SLEEPK 20
|
||
CALLR GET_RUN ;ZEROS STAND FLAG ALSO
|
||
MOVE *A13(DIR),A0
|
||
CALLA INTO12 ;GET PROPER VELOCITY FOR THIS DIR
|
||
SLEEPK 1
|
||
JRUC LUP_TP
|
||
|
||
NOSPN: MOVE *A13(DIS),A0 ;UPDATE DISTANCE COUNT
|
||
DEC A0
|
||
MOVE A0,*A13(DIS) ;STUFF NEW COUNT
|
||
JRNZ DOTNK ;BR=CONTINUE CURRENT DIRECTION
|
||
;TIME TO GET NEW DISTANCE AND NEW DIRECTION
|
||
MOVE *A13(MYPATRN),A10,L
|
||
MOVE *A10+,A11,W ;GET NEW DIRECTION
|
||
JRZ PATDN ;BR=PATTERN FINISHED
|
||
CLR A0
|
||
MOVE A0,*A8(OXVEL),L
|
||
MOVE A0,*A8(OYVEL),L
|
||
SLEEPK 20
|
||
MOVE *A10+,A2,W ;GET NEW DIS
|
||
MOVE *A13(SPDY),A3
|
||
JRZ NOSPD
|
||
;SPEEDY MINE LAYER
|
||
SRL 1,A2
|
||
NOSPD MOVE A2,*A13(DIS) ;STUFF NEW COUNT
|
||
MOVE A10,*A13(MYPATRN),L
|
||
MOVE A11,*A13(SK_DIR)
|
||
;TANK WILL SEEK TO A 45 DEGREE ANGLE (1,4,7,10)
|
||
MOVK 1,A0 ;TANK WILL SPIN TO SK_DIR
|
||
MOVE A0,*A13(CFLAGS) ;I WILL SPIN!
|
||
MOR SLEEPK 1
|
||
JRUC LUP_TP
|
||
|
||
PATDN
|
||
;PATTERN FINISHED
|
||
;DELETE ANTENNA, MINE LAYER
|
||
;DIE
|
||
CALLA SCRTST
|
||
JRNZ NBLOWME
|
||
;I AM STILL ON SCRN! CONTINUE IN THIS DIRECTION
|
||
MOVK 20,A0
|
||
MOVE A0,*A13(DIS)
|
||
JRUC MOR
|
||
NBLOWME
|
||
;I AM OFF SCRN
|
||
CALLA DELOBJA8
|
||
|
||
NBLOWME2 ;ENTRY FOR SMART BOMB
|
||
MOVE *A13(MYANT),A0,L
|
||
CALLA KILL
|
||
MOVE *A13(KPANTOBJ),A0,L
|
||
CALLA DELOBJ
|
||
|
||
MOVE @LYR_CNT,A0
|
||
DEC A0
|
||
MOVE A0,@LYR_CNT
|
||
MOVE *A13(KPMRAM),A10,L
|
||
MOVE *A13(TOTMN),A0 ;FLAG FOR I HAVE ALREADY
|
||
JRNN EXPEM ;KILLED MY LAND MINES
|
||
EXP_2_MANY
|
||
DIE
|
||
EXPEM
|
||
MOVK 12,A11
|
||
MOVE A10,A9
|
||
ND0 DEC A11
|
||
JRZ EXP_2_MANY
|
||
MOVE *A9+,A0,L
|
||
JRZ NDN
|
||
CALLA ISOBJ
|
||
JRZ ND0
|
||
MOVE *A0(OIMG),A1,L
|
||
CMPI M1,A1 ;LAND MINE
|
||
JRNZ ND0
|
||
MOVI DMAWNZ|M_NOCOLL,A1 ;LAND MINE NO COLLIDE ON
|
||
MOVE A1,*A0(OFLAGS)
|
||
MOVE A0,A8
|
||
MOVI MTING,A0 ;LAND MINE EXPLOSION SND
|
||
CALLA ONESND
|
||
CREATE0 KMINE
|
||
SLEEPK 6
|
||
JRUC ND0
|
||
NDN MOVE A10,A0 ;MOVE *A13(KPMRAM),A0,L
|
||
CALLA FREEOBJ
|
||
DIE
|
||
KMINE
|
||
MOVE A8,A10
|
||
CREATE0 KM2
|
||
CREATE0 KM2
|
||
CREATE0 KM2
|
||
SLEEPK 4 ;KILL ORIGINAL LAND MINE
|
||
move a10,a8
|
||
jauc DELOBJDIE
|
||
|
||
KM2
|
||
MOVI -08000H,B0
|
||
MOVI 08000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A6
|
||
MOVI -08000H,B0
|
||
MOVI 08000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A7
|
||
|
||
MOVI FIREEXP,A9
|
||
MOVE *A8(OXVAL),A0,L
|
||
MOVE *A8(OYVAL),A1,L
|
||
ADDI [5,0],A0
|
||
ADDI [5,0],A1
|
||
MOVI 292,A3 ;241 ;282
|
||
MOVI DMAWNZ|M_NOCOLL,A4 ;NON-ZERO VALUE
|
||
MOVI CLSNEUT|TYPNEUT,A5
|
||
MOVI CLD1,A2
|
||
|
||
CALLA BEGINOBJ2
|
||
;CREATE EXPLOSION, AND THEN DIE
|
||
jauc FRQDELDIE
|
||
|
||
DOTNK:
|
||
;MINE LAYER JUST CRUISING ALONG!
|
||
;CHECK FOR WALL BORDERS!
|
||
|
||
MOVE @WAVE,A0
|
||
CMPI 22,A0
|
||
JRNZ DT2
|
||
MOVE *A13(DIR),A0
|
||
CMPI 1,A0
|
||
JRNZ DT2
|
||
MOVE *A8(OYPOS),A0
|
||
CMPI 10CH,A0
|
||
JRNC DT2
|
||
;TURN ME AROUND
|
||
CLR A0
|
||
MOVE A0,*A8(OYVEL),L
|
||
MOVK 7,A11
|
||
MOVE A11,*A13(SK_DIR)
|
||
;TANK WILL SEEK TO A 45 DEGREE ANGLE (1,4,7,10)
|
||
MOVK 1,A0 ;TANK WILL SPIN TO SK_DIR
|
||
MOVE A0,*A13(CFLAGS) ;I WILL SPIN!
|
||
MOVK 30,A0
|
||
MOVE A0,*A13(DIS)
|
||
DT2
|
||
|
||
|
||
MOVE *A13(LAYTMR),A0
|
||
DEC A0
|
||
MOVE A0,*A13(LAYTMR)
|
||
JRNZ KS
|
||
MOVE *A13(TOTMN),A0
|
||
JRN KS
|
||
CMPI 11,A0
|
||
JRNC KS2
|
||
;LAY DOWN A LAND MINE
|
||
INC A0
|
||
MOVE A0,*A13(TOTMN)
|
||
MOVK 7,A0
|
||
MOVE A0,*A13(LAYTMR)
|
||
MOVE *A13(DIS),A0
|
||
CMPI 5,A0 ;5
|
||
JRC KS
|
||
CALLR LAYIT
|
||
KS
|
||
CLR A1
|
||
JSRP FRANIM
|
||
JRNC LUP_TP ;BR=NOT AT END OF SCRIPT YET
|
||
CALLR GET_RUN
|
||
JRUC LUP_TP
|
||
KS2 MOVI 0FFFFH,A0 ;FLAG FOR MINE LAYER TO KNOW
|
||
MOVE A0,*A13(TOTMN) ;TO NOT KILL HIS LAND MINES
|
||
MOVE *A13(KPMRAM),A10,L ;AT DEATH
|
||
CREATE0 EXPEM
|
||
JRUC KS
|
||
|
||
|
||
BIGBLU
|
||
.LONG XPLD1
|
||
.WORD 4
|
||
.LONG XPLD2
|
||
.WORD 4
|
||
.LONG XPLD3
|
||
.WORD 4
|
||
.LONG XPLD4
|
||
.WORD 4
|
||
.LONG XPLD5
|
||
.WORD 4
|
||
.LONG XPLD6
|
||
.WORD 4
|
||
.LONG XPLD7
|
||
.WORD 4
|
||
.LONG XPLD8
|
||
.WORD 4
|
||
.LONG XPLD9
|
||
.WORD 4
|
||
.LONG XPLD10
|
||
.WORD 4
|
||
.LONG 0
|
||
;BIGGRN
|
||
; .LONG XPLD1
|
||
; .WORD 4
|
||
; .LONG XPLD2
|
||
; .WORD 4
|
||
; .LONG XPLD3
|
||
; .WORD 4
|
||
; .LONG XPLD4
|
||
; .WORD 4
|
||
; .LONG XPLD5
|
||
; .WORD 4
|
||
; .LONG XPLD6
|
||
; .WORD 4
|
||
; .LONG XPLD7
|
||
; .WORD 4
|
||
; .LONG XPLD8
|
||
; .WORD 4
|
||
; .LONG XPLD9
|
||
; .WORD 4
|
||
; .LONG XPLD10
|
||
; .WORD 4
|
||
; .LONG 0
|
||
|
||
SENDGRN
|
||
;SEND GREEN EXPLOSIONS FROM JEEP
|
||
;A8=JEEP
|
||
; MOVI ALTEXP4,A0
|
||
; CALLA ONESND
|
||
MOVK 8,A11
|
||
MOVE A8,A10
|
||
LE2
|
||
CREATE0 KM2B
|
||
DSJS A11,LE2
|
||
DIE
|
||
BGLSEXP .WORD >FDF8,20,>80DB,0 ;ALT CHAN GLASS SHATTER
|
||
SENDGRN2
|
||
;SEND GREEN EXPLOSIONS FROM WARP DISC LOCATION
|
||
;A8=WARP DISC
|
||
MOVI BGLSEXP,A0
|
||
CALLA ONESNDOVR
|
||
MOVK 8,A11
|
||
MOVE A8,A10
|
||
BLE2
|
||
CREATE0 KM2C
|
||
DSJS A11,BLE2
|
||
DIE
|
||
|
||
ZKBM2
|
||
.LONG 0,0,X1BLU
|
||
.WORD 293,DMAWNZ+M_NOCOLL,CLSDEAD
|
||
.LONG 0H,0H
|
||
ZKBM3
|
||
.LONG 0,0,X1GRN
|
||
.WORD 293,DMAWNZ+M_NOCOLL,CLSDEAD
|
||
.LONG 0H,0H
|
||
|
||
LAY_EXP
|
||
;A8=MINE LAYER IMG
|
||
;COVER TIME
|
||
MOVI AGLSEXP,A0
|
||
CALLA ONESND
|
||
MOVK 8,A11
|
||
MOVE A8,A10
|
||
LE1
|
||
CREATE0 KM2A
|
||
DSJS A11,LE1
|
||
SLEEPK 6
|
||
MOVI GLSEXP,A0
|
||
CALLA ONESND
|
||
MOVE A10,A8
|
||
JRUC NBLOWME
|
||
KBM ;ARM RGT
|
||
.LONG 0,0,T72BLAST1 ;FIRE1
|
||
.WORD 293,DMAWNZ+M_FLIPH+M_NOCOLL,CLSDEAD
|
||
.LONG 0H,0H
|
||
SAVE1
|
||
CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE
|
||
CALLA STFOBJ ;STUFF OBJECT DATA
|
||
CALLA INSOBJ ;INSERT OBJECT INTO LIST
|
||
MOVE A0,A9 ;A8
|
||
MOVE *A9(OPAL),A0,L
|
||
ANDI 0FFFFH,A0
|
||
MOVE A0,*A9(OPAL),L
|
||
MOVE A10,A8
|
||
CALLA GETANIXY
|
||
MOVE A9,A0
|
||
MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE
|
||
RETS
|
||
KM2B
|
||
;TURN ON BURST EXP
|
||
;SEND IT OUT AT CORRECT ANGLE
|
||
;KILL OFF
|
||
;A10=MINE LAYER IMG
|
||
;A11=BURST #
|
||
MOVI ZKBM2,A14 ;DEATH FOR JEEP
|
||
CALLR SAVE1
|
||
ADDI 0500000H,A2 ;Y
|
||
; MOVE *A10(OIMG),A7,L
|
||
; CMPI JEEP4,A7
|
||
; JRNZ NOTHZ
|
||
; ADDI 0340000H,A3 ;X
|
||
;NOTHZ
|
||
CALLA GANISAG
|
||
MOVE A9,A8
|
||
MOVI BIGBLU,A9
|
||
JRUC CONTS
|
||
KM2C
|
||
;TURN ON BURST EXP
|
||
;SEND IT OUT AT CORRECT ANGLE
|
||
;KILL OFF
|
||
;A10=WARP DISC
|
||
;A11=BURST #
|
||
MOVI ZKBM3,A14 ;INTRO FOR WARP DISC
|
||
CALLR SAVE1
|
||
ADDI 0200000H,A2 ;Y
|
||
ADDI 0A0000H,A3 ;X
|
||
CALLA GANISAG
|
||
MOVE A9,A8
|
||
MOVI BIGBLU,A9 ;GRN,A9
|
||
JRUC CONTS
|
||
|
||
KM2A
|
||
;TURN ON BURST EXP
|
||
;SEND IT OUT AT CORRECT ANGLE
|
||
;KILL OFF
|
||
;A10=MINE LAYER IMG
|
||
;A11=BURST #
|
||
MOVI KBM,A14 ;BLOOD
|
||
CALLR SAVE1
|
||
SUBI 0F0000H,A2 ;1C
|
||
CALLA GANISAG
|
||
MOVE A9,A8
|
||
MOVI TBLST,A9
|
||
|
||
CONTS SLL 5,A11
|
||
MOVI XVL,A0
|
||
ADD A11,A0
|
||
MOVE *A0,A0,L
|
||
MOVE A0,*A8(OXVEL),L
|
||
|
||
MOVI YVL,A0
|
||
ADD A11,A0
|
||
MOVE *A0,A0,L
|
||
MOVE A0,*A8(OYVEL),L
|
||
|
||
;FROM MINE LAYER DEATH
|
||
jauc FRQDELDIE
|
||
|
||
XVL .LONG 0,0,14000H,18000H,14000H,0,-14000H,-18000H,-14000H
|
||
YVL .LONG 0,-16000H,-14000H,0,14000H,16000H,14000H,0,-14000H
|
||
;812
|
||
;7 3
|
||
;654
|
||
LAYIT
|
||
;A8=MINE LAYER
|
||
MOVE *A13(DIR),A10
|
||
MOVE *A8(OXVAL),A0,L
|
||
MOVE *A8(OYVAL),A1,L
|
||
SLL 5,A10
|
||
ADDI MYX,A10
|
||
MOVE *A10,A10,L
|
||
ADD A10,A1
|
||
SLL 16,A10
|
||
ADD A10,A0
|
||
;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
|
||
PUSH A8
|
||
CALLA BEGINOBJ2
|
||
CLR A0
|
||
MOVE A0,*A8(OPLINK),L
|
||
;PUT THIS IMG PNTR INTO A RAM LIST FOR THIS MINE LAYER
|
||
MOVE *A13(MRAM),A0,L
|
||
MOVE A8,*A0+,L
|
||
CLR A1
|
||
MOVE A1,*A0,L ;ZERO NEXT ENTRY
|
||
MOVE A0,*A13(MRAM),L
|
||
PULL A8
|
||
RETS
|
||
|
||
MYX .LONG 0,[6,10H],0,0,[12H,18H],0,0,[10H,0FH],0,0,[10H,18H],0,0
|
||
; 1
|
||
; 12 2
|
||
; 11 3
|
||
; 10 4 ;MINE LAYER 12 ANGLES
|
||
; 9 5
|
||
; 8 6
|
||
; 7
|
||
|
||
SETUP_TNK:
|
||
;UPDATE WAVE RAM CNT FOR TANKS ON THIS WAVE
|
||
;SET LEVEL FOR THIS TANK
|
||
;
|
||
; UPDATE TNK COUNT
|
||
;
|
||
MOVE @LYR_CNT,A0
|
||
INC A0
|
||
MOVE A0,@LYR_CNT
|
||
|
||
MOVI TANK,A2
|
||
CALLA GET_WVADDR
|
||
|
||
MOVE *A0(32),A1,W ;GET DIFFICULTY LEVEL
|
||
MOVE A1,*A13(LEVEL),W
|
||
|
||
MOVE *A0(16),A1,W ;DEC WAVE RAM CNT FOR THIS TANK
|
||
DEC A1
|
||
MOVE A1,*A0(16),W
|
||
JRNZ BZ
|
||
;END OF THIS WAVES TANK CNT
|
||
MOVK 1,A1
|
||
MOVE A1,@TNK_DN
|
||
BZ
|
||
RETS
|
||
ANTENNA
|
||
;A8=MINE LAYER UNDER ANTENNA
|
||
;A10=MINE LAYER PROCESS UNDER ME
|
||
;TURN ON AN ANTENNA IMAGE OVER MINE LAYER
|
||
;SIT ON TOP OF TANK
|
||
;ADJUST FOR SPINNING MINE LAYING TANK!
|
||
MOVE A8,*A13(PDATA),L ;TANK OBJECT PNTR
|
||
CALLA GETANIXY
|
||
CLR A6
|
||
CLR A7
|
||
MOVE A2,A1
|
||
MOVE A3,A0
|
||
MOVI 160,A3 ;133
|
||
MOVI DMAWNZ|M_NOCOLL,A4
|
||
MOVI CLSNEUT,A5
|
||
MOVI ANT,A2 ;ANTENNA IMG
|
||
CALLA BEGINOBJ2
|
||
MOVE A8,*A10(KPANTOBJ),L ;STORE IN MINE LAYER PROC FOR KILLING
|
||
|
||
MOVE *A8(OPAL),A0,L
|
||
ANDI 0FFFFH,A0
|
||
MOVE A0,*A8(OPAL),L
|
||
ANTTOP SLEEPK 1
|
||
CALLR SIT
|
||
JRUC ANTTOP
|
||
|
||
; 1
|
||
; 12 2
|
||
; 11 3
|
||
; 10 4 ;MINE LAYER 12 ANGLES
|
||
; 9 5
|
||
; 8 6
|
||
; 7
|
||
SIT:
|
||
MOVE A8,A0
|
||
MOVE *A13(PDATA),A8,L ;MINE LAYER IMG PNTR
|
||
CALLA GETANIXY
|
||
;A2=Y,A3=X
|
||
MOVE *A10(DIR),A4 ;MINE LAYER DIR
|
||
SLL 5,A4
|
||
ADDI ADLST,A4
|
||
MOVE *A4,A4,L
|
||
ADD A4,A2
|
||
SLL 16,A4
|
||
ADD A4,A3
|
||
MOVE *A0(OFLAGS),A4,W
|
||
CALLA GANISAG ;ADJUSTS TORSO
|
||
MOVE A0,A8
|
||
RETS
|
||
;Y,X ADD IN FOR ANTENNA AT DIFFERENT ANGLES
|
||
ADLST .LONG 0,[-26,2],[-27,-8],[-29,-8],[-31,-2],[-30,-2],[-30,0]
|
||
.LONG [-28,-6],[-30,-4],[-30,-2],[-32,-2],[-29,4],[-29,-2]
|
||
|
||
|
||
WAY:
|
||
;SPIN LEFT OR RIGHT
|
||
;A1=SEEK DIR
|
||
;A0=DIR IMAGE IS FACING NOW
|
||
; 1
|
||
; 12 2
|
||
; 11 3
|
||
; 10 4 ;MINE LAYER 12 ANGLES
|
||
; 9 5
|
||
; 8 6
|
||
; 7
|
||
;812
|
||
;7 3 ;NORMAL GRUNT
|
||
;654
|
||
; 01
|
||
; 16 02
|
||
; 15 03
|
||
; 14 04
|
||
; 13 05 ;16 ANGLE TANK, ETC
|
||
; 12 06
|
||
; 11 07
|
||
; 10 08
|
||
; 09
|
||
SUB A0,A1
|
||
MOVE A1,A2
|
||
ABS A1
|
||
CMPI 7,A1 ;9;5
|
||
JRLT N0
|
||
NEG A2
|
||
N0: BTST 31,A2
|
||
JRZ IC
|
||
INHERE: DEC A0
|
||
JRP TDEC
|
||
MOVK 12,A0 ;16;8
|
||
TDEC CLRC ;MEANS DEC
|
||
RETS
|
||
IC: INC A0 ;ROTATE TOWARD PLAYER
|
||
CMPI 13,A0 ;17;9
|
||
JRNE T1
|
||
MOVK 1,A0
|
||
T1: SETC ;MEANS INC
|
||
RETS
|
||
|
||
GET_RUN:
|
||
;GET FRANIM BASE ADDRESS FOR THIS TANKS DIRECTION
|
||
; 1
|
||
; 12 2
|
||
; 11 3
|
||
; 10 4
|
||
; 9 5
|
||
; 8 6
|
||
; 7
|
||
MOVE *A13(DIR),A4
|
||
DEC A4
|
||
SLL 5,A4 ;*32 FOR LONG WORD LOOKUP TABLE
|
||
ADDI WALK_LIST,A4 ;CALCULATE OFFSET IN TABLE
|
||
MOVE *A4,A9,L ;MOVE TABLE VALUE INTO A9
|
||
;NEW ANIMATION SCRIPT
|
||
MOVE *A13(CFLAGS),A0
|
||
ANDI 0FFFEH,A0 ;
|
||
MOVE A0,*A13(CFLAGS) ;ZERO STANDING/SPIN FLAG
|
||
RETS
|
||
|
||
; 1
|
||
; 12 2
|
||
; 11 3
|
||
; 10 4
|
||
; 9 5
|
||
; 8 6
|
||
; 7
|
||
SPINFRMS:
|
||
.LONG MTNK12,MTNK11,MTNK10,MTNK9,MTNK8,MTNK7,MTNK6
|
||
.LONG MTNK7,MTNK8,MTNK9,MTNK10,MTNK11
|
||
TK_SPINFLGS:
|
||
.WORD DMAWNZ,DMAWNZ+M_FLIPH,DMAWNZ+M_FLIPH,DMAWNZ+M_FLIPH
|
||
.WORD DMAWNZ+M_FLIPH,DMAWNZ+M_FLIPH,DMAWNZ
|
||
.WORD DMAWNZ
|
||
.WORD DMAWNZ,DMAWNZ,DMAWNZ
|
||
.WORD DMAWNZ
|
||
|
||
GET_STAND:
|
||
;ANI ONTO SCREEN THIS TANKS STANDING POSITION
|
||
MOVE *A13(DIR),A0 ;CURRENT DIR TANK IS FACING
|
||
DEC A0
|
||
ANDI 0FH,A0
|
||
MOVE A0,A2
|
||
SLL 5,A0
|
||
ADDI SPINFRMS,A0
|
||
MOVE *A0,A1,L ;NEW OIMG
|
||
SLL 4,A2
|
||
ADDI TK_SPINFLGS,A2
|
||
MOVE *A2,A4,W ;NEW OFLAGS
|
||
CALLA ANI
|
||
RETS
|
||
|
||
INTOL .LONG 0,60H,0C0H,120H,180H,1E0H,240H,2A0H
|
||
INIT_TNK:
|
||
;TURN ON TANK AT ONE OF THE 8 LOCATIONS HULKS CAN GENERATE FROM
|
||
;SET HIS DIR ACCORDINGLY
|
||
CALLA RANDOM
|
||
ANDI 07H,A0
|
||
|
||
; MOVK 2,A0 ;0=UP,2=RGT,4=LFT,6=DWN
|
||
|
||
SLL 5,A0
|
||
ADDI INTOL,A0
|
||
MOVE *A0,A0,L
|
||
MOVE @ENEMY_RECT,A8,L
|
||
ADD A0,A8
|
||
|
||
ADDK 16,A8 ;SKIP TYPE OF RELEASE RECTANGLE
|
||
|
||
MOVE *A8+,A10,W ;DIRECTION
|
||
MOVE *A8+,A0,W
|
||
MOVE A0,B0
|
||
MOVE *A8+,A2
|
||
MOVE *A8+,A0
|
||
MOVE A0,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A9
|
||
MOVE A2,B0
|
||
MOVE *A8,A0
|
||
MOVE A0,B1
|
||
CALLA RANGRAND
|
||
SLL 16,A0
|
||
MOVY A0,A9
|
||
|
||
JINHR
|
||
;A8=CHOSEN RECTANGLE INFO
|
||
;A9=[Y,X] OF SPOT TO START FROM
|
||
;A10=DIRECTION
|
||
;8 1 2
|
||
;7 3
|
||
;6 5 4
|
||
;NEED
|
||
; 1
|
||
; 12 2
|
||
; 11 3
|
||
; 10 4
|
||
; 9 5
|
||
; 8 6
|
||
; 7
|
||
|
||
SLL 5,A10
|
||
MOVI XYOFST,A0
|
||
ADD A10,A0
|
||
MOVE *A0,A0,L
|
||
ADD A0,A9
|
||
MOVI NEWD,A0
|
||
ADD A10,A0
|
||
MOVE *A0,A0,L
|
||
MOVE A0,*A13(DIR)
|
||
MOVI TIMG,A0
|
||
ADD A10,A0
|
||
MOVE *A0,A2,L ;IMG TO START WITH
|
||
MOVI TFLP,A0
|
||
ADD A10,A0
|
||
MOVE *A0,A4,L ;IMG TO START WITH
|
||
MOVI 159,A3 ;158
|
||
MOVI CLSENMY|TYPLAYR,A5
|
||
CLR A6
|
||
CLR A7
|
||
CLR A1
|
||
MOVY A9,A1
|
||
SLL 16,A9
|
||
MOVE A9,A0
|
||
CALLA BEGINOBJ2
|
||
RETS
|
||
|
||
XYOFST .LONG 0,[0,25],0,[15,0],0,[0,25],0,[15,0],0
|
||
|
||
NEWD .LONG 0,1,1,4,4,7,7,10,10,10,10
|
||
TIMG .LONG 0,MTNK12,MTNK12,MTNK9,MTNK9,MTNK6,MTNK6,MTNK9,MTNK9,MTNK9
|
||
TFLP .LONG 0,DMAWNZ,DMAWNZ,DMAWNZ|M_FLIPH,DMAWNZ|M_FLIPH,DMAWNZ
|
||
.LONG DMAWNZ,DMAWNZ,DMAWNZ,DMAWNZ
|
||
|
||
; 1
|
||
; 12 2
|
||
; 11 3
|
||
; 10 4
|
||
; 9 5
|
||
; 8 6
|
||
; 7
|
||
WALK_LIST:
|
||
.LONG TNK01,0,0,TNK04,0,0,TNK07
|
||
.LONG 0,0,TNK10,0,0
|
||
;
|
||
;TANK ANIMATION TABLES
|
||
;
|
||
TNK01: ;GO UP
|
||
.LONG MTNK12
|
||
.WORD FLIPBITS|05,0
|
||
.LONG MTNK12B
|
||
.WORD 05
|
||
.LONG MTNK12
|
||
.WORD 05
|
||
.LONG MTNK12B
|
||
.WORD 05
|
||
.LONG MTNK12
|
||
.WORD 05
|
||
.LONG MTNK12B
|
||
.WORD 05
|
||
.LONG MTNK12
|
||
.WORD 05
|
||
.LONG MTNK12B
|
||
.WORD 05
|
||
.LONG MTNK12
|
||
.WORD 05
|
||
.LONG MTNK12B
|
||
.WORD 05
|
||
.LONG MTNK12
|
||
.WORD 05
|
||
.LONG MTNK12B
|
||
.WORD 05
|
||
.LONG 0
|
||
TNK04: ;GO RIGHT
|
||
.LONG MTNK9
|
||
.WORD FLIPBITS|05,(M_FLIPH)
|
||
.LONG MTNK9B
|
||
.WORD 05
|
||
.LONG MTNK9
|
||
.WORD 05
|
||
.LONG MTNK9B
|
||
.WORD 05
|
||
.LONG MTNK9
|
||
.WORD 05
|
||
.LONG MTNK9B
|
||
.WORD 05
|
||
.LONG MTNK9
|
||
.WORD 05
|
||
.LONG MTNK9B
|
||
.WORD 05
|
||
.LONG MTNK9
|
||
.WORD 05
|
||
.LONG MTNK9B
|
||
.WORD 05
|
||
.LONG MTNK9
|
||
.WORD 05
|
||
.LONG MTNK9B
|
||
.WORD 05
|
||
.LONG 0
|
||
TNK07: ;GO DOWN
|
||
.LONG MTNK6
|
||
.WORD FLIPBITS|05,0
|
||
.LONG MTNK6B
|
||
.WORD 05
|
||
.LONG MTNK6
|
||
.WORD 05
|
||
.LONG MTNK6B
|
||
.WORD 05
|
||
.LONG MTNK6
|
||
.WORD 05
|
||
.LONG MTNK6B
|
||
.WORD 05
|
||
.LONG MTNK6
|
||
.WORD 05
|
||
.LONG MTNK6B
|
||
.WORD 05
|
||
.LONG MTNK6
|
||
.WORD 05
|
||
.LONG MTNK6B
|
||
.WORD 05
|
||
.LONG MTNK6
|
||
.WORD 05
|
||
.LONG MTNK6B
|
||
.WORD 05
|
||
.LONG 0
|
||
TNK10: ;GO LEFT
|
||
.LONG MTNK9
|
||
.WORD FLIPBITS|05,0
|
||
.LONG MTNK9B
|
||
.WORD 05
|
||
.LONG MTNK9
|
||
.WORD 05
|
||
.LONG MTNK9B
|
||
.WORD 05
|
||
.LONG MTNK9
|
||
.WORD 05
|
||
.LONG MTNK9B
|
||
.WORD 05
|
||
.LONG MTNK9
|
||
.WORD 05
|
||
.LONG MTNK9B
|
||
.WORD 05
|
||
.LONG MTNK9
|
||
.WORD 05
|
||
.LONG MTNK9B
|
||
.WORD 05
|
||
.LONG MTNK9
|
||
.WORD 05
|
||
.LONG MTNK9B
|
||
.WORD 05
|
||
.LONG 0
|
||
|
||
PATLST
|
||
; 1
|
||
; 12 2
|
||
; 11 3
|
||
; 10 4 ;MINE LAYER 12 ANGLES
|
||
; 9 5
|
||
; 8 6
|
||
; 7
|
||
;
|
||
.LONG 0,UPLST,0,0,RGTLST,0,0,DWNLST,0,0,LFTLST,0,0
|
||
;
|
||
UPLST .LONG UPL1,UPL2,UPL3,UPL4
|
||
RGTLST .LONG RGTL1,RGTL2,RGTL3,RGTL4
|
||
DWNLST .LONG DWNL1,DWNL2,DWNL3,DWNL4
|
||
LFTLST .LONG LFTL1,LFTL2,LFTL3,LFTL4
|
||
|
||
;INTO MYPATRN PDATA AREA VARIABLE
|
||
;DISTANCE,NEW DIR,DISTANCE,NEW DIR
|
||
;NEW DIR=0=TANK HAS FINISHED PATTERN (IS OFF SCRN), DIE OFF
|
||
UPL1 .WORD 60,4,30,7,12H,10,32H,1,30H,0,0,0
|
||
UPL2 .WORD 40,10,30,1,16H,4,60H,0,0,0
|
||
UPL3 .WORD 40,4,10,1,38H,0,0,0
|
||
UPL4 .WORD 30,10,1AH,1,30,4,30H,1,20H,0,0,0
|
||
;
|
||
RGTL1 .WORD 84H,0,0,0 ;GO RGT 100, DIE
|
||
RGTL2 .WORD 55H,7,38H,0,0,0
|
||
RGTL3 .WORD 30,1,12H,4,30H,7,12H,10,48H,0,0,0
|
||
RGTL4 .WORD 50H,1,30H,0,0,0
|
||
;
|
||
DWNL1 .WORD 03CH,4,1AH,10,40,7,10H,1,50H,0,0,0
|
||
DWNL2 .WORD 68H,0,0,0 ;GO DWN 100, DIE
|
||
DWNL3 .WORD 50,10,60,0,0,0
|
||
DWNL4 .WORD 38,4,45,7,30,10,40,7,10,1,40,10,40H,0,0,0
|
||
;
|
||
LFTL1 .WORD 84H,0,0,0 ;GO LFT 100, DIE
|
||
LFTL2 .WORD 60H,4,68H,0,0,0
|
||
LFTL3 .WORD 44H,1,2CH,0,0,0
|
||
LFTL4 .WORD 20H,7,20,10,40,1,48H,0,0,0
|
||
;
|
||
|
||
.DEF DO_HURRY,SEND_NEUT,SHORT_NOTE
|
||
.REF CNTDIG1,CNTDIG2,WARP_KIL,RD15FONT,WRLD,STRCNRMO,STRLNRMO
|
||
.REF PLYRPRCS,STRCNRM,SLOW_DWN
|
||
|
||
.BSS KEEP2,16
|
||
.BSS KEEP3,16
|
||
.BSS KEEP2L,16
|
||
.BSS KEEP3L,16
|
||
SHORT_NOTE
|
||
;WARPED OR TOOK SHORTCUT TO ORCUS!
|
||
SLEEP 90
|
||
MOVE @PLYROBJS,A9,L
|
||
JRNZ WS12
|
||
MOVE @PLYROBJS+32,A9,L
|
||
WS12
|
||
;SET OFF SMART BOMB
|
||
;A9=PLYR IMG PTR WHO GOT ME
|
||
CREATE0 SBOMB
|
||
|
||
MOVI P1DATA,A2
|
||
move @PLYRPRCS,A0,L
|
||
JRZ SHADD1
|
||
MOVI >50000,A1 ;100,000 PNTS FOR SHORTCUT
|
||
MOVE @STATUS,A4
|
||
CMPI 3,A4
|
||
JRNZ SXZ
|
||
MOVI >25000,A1 ;100,000 PNTS FOR SHORTCUT
|
||
SXZ CALLA SCRADD2 ;
|
||
SHADD1 MOVI P2DATA,A2
|
||
move @PLYRPRCS+32,A0,L
|
||
JRZ SHADD2
|
||
MOVI >50000,A1
|
||
MOVE @STATUS,A4
|
||
CMPI 3,A4
|
||
JRNZ SXZ2
|
||
MOVI >25000,A1 ;100,000 PNTS FOR SHORTCUT
|
||
SXZ2 CALLA SCRADD2 ;
|
||
SHADD2
|
||
move @PLYRPRCS,A0,L
|
||
JRZ SHADD3
|
||
MOVE @P1DATA+THSTGS,A0
|
||
ADDI 100,A0
|
||
MOVE A0,@P1DATA+THSTGS
|
||
MOVE @P1DATA+CASHCNT,A0
|
||
ADDI 100,A0
|
||
MOVE A0,@P1DATA+CASHCNT
|
||
MOVE @P1DATA+TFLAGS,A0
|
||
ADDI 100,A0
|
||
MOVE A0,@P1DATA+TFLAGS
|
||
MOVK 5,A1
|
||
MOVE @STATUS,A2
|
||
SUBK 3,A2
|
||
JRZ SHD2
|
||
MOVK 10,A1
|
||
SHD2
|
||
MOVE @P1DATA+TKEYS,A0
|
||
ADD A1,A0
|
||
MOVE A0,@P1DATA+TKEYS
|
||
SHADD3
|
||
move @PLYRPRCS+32,A0,L
|
||
JRZ SHADD4
|
||
MOVE @P2DATA+THSTGS,A0
|
||
ADDI 100,A0
|
||
MOVE A0,@P2DATA+THSTGS
|
||
MOVE @P2DATA+CASHCNT,A0
|
||
ADDI 100,A0
|
||
MOVE A0,@P2DATA+CASHCNT
|
||
MOVE @P2DATA+TFLAGS,A0
|
||
ADDI 100,A0
|
||
MOVE A0,@P2DATA+TFLAGS
|
||
MOVK 5,A1
|
||
MOVE @STATUS,A2
|
||
SUBK 3,A2
|
||
JRZ SHD2A
|
||
MOVK 10,A1
|
||
SHD2A
|
||
MOVE @P2DATA+TKEYS,A0
|
||
ADD A1,A0
|
||
MOVE A0,@P2DATA+TKEYS
|
||
SHADD4
|
||
JSRP SHKIN
|
||
MOVI 3E3EH,A6
|
||
MOVI [81,0200],A9 ;SCRN Y/X
|
||
MOVI RD15FONT,A11 ;FONT TABLE
|
||
CLR A0
|
||
MOVE A0,@WRLD
|
||
MOVK 2,A10 ;Y,X SPACING BETWEEN CHARCTERS
|
||
CLR A0
|
||
MOVI CUT0,A8
|
||
JSRP STRCNRMO
|
||
MOVI JMPSND,A0
|
||
CALLA ONESND
|
||
SLEEPK 10
|
||
;
|
||
JSRP SHKIN
|
||
MOVI [115,061],A9 ;SCRN Y/X
|
||
CLR A0
|
||
MOVI 3E3EH,A6
|
||
MOVI CUT1,A8
|
||
JSRP STRLNRMO
|
||
MOVI JMPSND,A0
|
||
CALLA ONESND
|
||
SLEEPK 10
|
||
;
|
||
JSRP SHKIN
|
||
MOVI [135,061],A9 ;SCRN Y/X
|
||
CLR A0
|
||
MOVI 3E3EH,A6
|
||
MOVI CUT2,A8
|
||
JSRP STRLNRMO
|
||
|
||
JSRP SHKIN
|
||
MOVI [135,314],A9 ;SCRN Y/X
|
||
CLR A0
|
||
MOVI 3E3EH,A6
|
||
MOVI CUT6,A8
|
||
JSRP STRLNRMO
|
||
MOVI JMPSND,A0
|
||
CALLA ONESND
|
||
SLEEPK 10
|
||
|
||
JSRP SHKIN
|
||
MOVI [155,061],A9 ;SCRN Y/X
|
||
CLR A0
|
||
MOVI 3E3EH,A6
|
||
MOVI CUT3,A8
|
||
JSRP STRLNRMO
|
||
|
||
JSRP SHKIN
|
||
MOVI [155,314],A9 ;SCRN Y/X
|
||
CLR A0
|
||
MOVI 3E3EH,A6
|
||
MOVI CUT6,A8
|
||
JSRP STRLNRMO
|
||
MOVI JMPSND,A0
|
||
CALLA ONESND
|
||
SLEEPK 10
|
||
;
|
||
JSRP SHKIN
|
||
MOVI [175,061],A9 ;SCRN Y/X
|
||
CLR A0
|
||
MOVI 3E3EH,A6
|
||
MOVI CUT4,A8
|
||
JSRP STRLNRMO
|
||
|
||
JSRP SHKIN
|
||
MOVI [175,314],A9 ;SCRN Y/X
|
||
CLR A0
|
||
MOVI 3E3EH,A6
|
||
MOVI CUT6,A8
|
||
JSRP STRLNRMO
|
||
MOVI JMPSND,A0
|
||
CALLA ONESND
|
||
SLEEPK 10
|
||
;
|
||
JSRP SHKIN
|
||
MOVI [195,061],A9 ;SCRN Y/X
|
||
CLR A0
|
||
MOVI 3E3EH,A6
|
||
MOVI CUT5,A8
|
||
JSRP STRLNRMO
|
||
|
||
JSRP SHKIN
|
||
MOVI [195,328],A9 ;SCRN Y/X
|
||
CLR A0
|
||
MOVI 3E3EH,A6
|
||
MOVI CUT7,A8
|
||
JSRP STRLNRMO
|
||
MOVI JMPSND,A0
|
||
CALLA ONESND
|
||
SLEEP 2*60 ;+40
|
||
.REF FLYERS
|
||
CREATE0 FLYERS
|
||
SLEEP 5*60
|
||
MOVI CLSNEUT|TYPTEXT|SUBTXT,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA KILOBJ
|
||
MOVI COLRPID,A0
|
||
CALLA KIL1C
|
||
RETP
|
||
SHKIN SLEEPK 1
|
||
MOVE @SHK_ON,A0
|
||
JRNZ SHKIN
|
||
RETP
|
||
|
||
.DEF WEASEL_NOTE
|
||
;TOOK WEASEL WARP
|
||
WEASEL_NOTE
|
||
SLEEP 90
|
||
MOVE @PLYROBJS,A9,L
|
||
JRNZ WS1
|
||
MOVE @PLYROBJS+32,A9,L
|
||
WS1
|
||
;SET OFF SMART BOMB
|
||
;A9=PLYR IMG PTR WHO GOT ME
|
||
CREATE0 SBOMB
|
||
|
||
MOVI P1DATA,A2
|
||
move @PLYRPRCS,A0,L
|
||
JRZ WSHADD1
|
||
MOVI >40000,A1 ;100,000 PNTS FOR SHORTCUT
|
||
MOVE @STATUS,A4
|
||
CMPI 3,A4
|
||
JRNZ WSXZ
|
||
MOVI >20000,A1 ;100,000 PNTS FOR SHORTCUT
|
||
WSXZ CALLA SCRADD2 ;
|
||
WSHADD1 MOVI P2DATA,A2
|
||
move @PLYRPRCS+32,A0,L
|
||
JRZ WSHADD2
|
||
MOVI >40000,A1
|
||
MOVE @STATUS,A4
|
||
CMPI 3,A4
|
||
JRNZ WSXZ2
|
||
MOVI >20000,A1 ;100,000 PNTS FOR SHORTCUT
|
||
WSXZ2 CALLA SCRADD2 ;
|
||
WSHADD2
|
||
move @PLYRPRCS,A0,L
|
||
JRZ WSHADD3
|
||
MOVE @P1DATA+THSTGS,A0
|
||
ADDI 50,A0
|
||
MOVE A0,@P1DATA+THSTGS
|
||
MOVE @P1DATA+CASHCNT,A0
|
||
ADDI 50,A0
|
||
MOVE A0,@P1DATA+CASHCNT
|
||
MOVE @P1DATA+TFLAGS,A0
|
||
ADDI 50,A0
|
||
MOVE A0,@P1DATA+TFLAGS
|
||
MOVK 5,A1
|
||
MOVE @STATUS,A2
|
||
SUBK 3,A2
|
||
JRZ WSHD2
|
||
MOVK 10,A1
|
||
WSHD2
|
||
MOVE @P1DATA+TKEYS,A0
|
||
ADD A1,A0
|
||
MOVE A0,@P1DATA+TKEYS
|
||
WSHADD3
|
||
move @PLYRPRCS+32,A0,L
|
||
JRZ WSHADD4
|
||
MOVE @P2DATA+THSTGS,A0
|
||
ADDI 50,A0
|
||
MOVE A0,@P2DATA+THSTGS
|
||
MOVE @P2DATA+CASHCNT,A0
|
||
ADDI 50,A0
|
||
MOVE A0,@P2DATA+CASHCNT
|
||
MOVE @P2DATA+TFLAGS,A0
|
||
ADDI 50,A0
|
||
MOVE A0,@P2DATA+TFLAGS
|
||
MOVK 5,A1
|
||
MOVE @STATUS,A2
|
||
SUBK 3,A2
|
||
JRZ WSHD2A
|
||
MOVK 10,A1
|
||
WSHD2A
|
||
MOVE @P2DATA+TKEYS,A0
|
||
ADD A1,A0
|
||
MOVE A0,@P2DATA+TKEYS
|
||
WSHADD4
|
||
JSRP SHKIN
|
||
MOVI 3E3EH,A6
|
||
MOVI [81,0200],A9 ;SCRN Y/X
|
||
MOVI RD15FONT,A11 ;FONT TABLE
|
||
CLR A0
|
||
MOVE A0,@WRLD
|
||
MOVK 2,A10 ;Y,X SPACING BETWEEN CHARCTERS
|
||
CLR A0
|
||
MOVI WCUT0,A8
|
||
JSRP STRCNRMO
|
||
MOVI JMPSND,A0
|
||
CALLA ONESND
|
||
SLEEPK 10
|
||
;
|
||
JSRP SHKIN
|
||
MOVI [115,061],A9 ;SCRN Y/X
|
||
CLR A0
|
||
MOVI 3E3EH,A6
|
||
MOVI WCUT1,A8
|
||
JSRP STRLNRMO
|
||
MOVI JMPSND,A0
|
||
CALLA ONESND
|
||
SLEEPK 10
|
||
;
|
||
JSRP SHKIN
|
||
MOVI [135,061],A9 ;SCRN Y/X
|
||
CLR A0
|
||
MOVI 3E3EH,A6
|
||
MOVI WCUT2,A8
|
||
JSRP STRLNRMO
|
||
|
||
JSRP SHKIN
|
||
MOVI [135,315+8],A9 ;SCRN Y/X
|
||
CLR A0
|
||
MOVI 3E3EH,A6
|
||
MOVI WCUT6,A8
|
||
JSRP STRLNRMO
|
||
MOVI JMPSND,A0
|
||
CALLA ONESND
|
||
SLEEPK 10
|
||
;
|
||
JSRP SHKIN
|
||
MOVI [155,061],A9 ;SCRN Y/X
|
||
CLR A0
|
||
MOVI 3E3EH,A6
|
||
MOVI WCUT3,A8
|
||
JSRP STRLNRMO
|
||
|
||
JSRP SHKIN
|
||
MOVI [155,315+8],A9 ;SCRN Y/X
|
||
CLR A0
|
||
MOVI 3E3EH,A6
|
||
MOVI WCUT6,A8
|
||
JSRP STRLNRMO
|
||
MOVI JMPSND,A0
|
||
CALLA ONESND
|
||
SLEEPK 10
|
||
;
|
||
JSRP SHKIN
|
||
MOVI [175,061],A9 ;SCRN Y/X
|
||
CLR A0
|
||
MOVI 3E3EH,A6
|
||
MOVI WCUT4,A8
|
||
JSRP STRLNRMO
|
||
|
||
JSRP SHKIN
|
||
MOVI [175,315+8],A9 ;SCRN Y/X
|
||
CLR A0
|
||
MOVI 3E3EH,A6
|
||
MOVI WCUT6,A8
|
||
JSRP STRLNRMO
|
||
MOVI JMPSND,A0
|
||
CALLA ONESND
|
||
SLEEPK 10
|
||
;
|
||
JSRP SHKIN
|
||
MOVI [195,061],A9 ;SCRN Y/X
|
||
CLR A0
|
||
MOVI 3E3EH,A6
|
||
MOVI WCUT5,A8
|
||
JSRP STRLNRMO
|
||
|
||
JSRP SHKIN
|
||
MOVI [195,323+6],A9 ;SCRN Y/X
|
||
CLR A0
|
||
MOVI 3E3EH,A6
|
||
MOVI WCUT7,A8
|
||
JSRP STRLNRMO
|
||
MOVI JMPSND,A0
|
||
CALLA ONESND
|
||
SLEEP 2*60 ;+40
|
||
.REF FLYERS
|
||
CREATE0 FLYERS
|
||
SLEEP 5*60
|
||
MOVI CLSNEUT|TYPTEXT|SUBTXT,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA KILOBJ
|
||
MOVI COLRPID,A0
|
||
CALLA KIL1C
|
||
RETP
|
||
|
||
DO_HURRY
|
||
SLEEP 20*60
|
||
DOH1 SLEEPK 2
|
||
MOVE @SHK_ON,A0
|
||
JRNZ DOH1
|
||
MOVE @WORLDTLY,A2,L
|
||
CMPI [127EH,0],A2
|
||
JANZ SUCIDE
|
||
|
||
MOVE @HALT,A0
|
||
JRNZ DO_HURRY
|
||
CALLR SEND_NEUT
|
||
JRUC DOH1
|
||
SEND_NEUT
|
||
MOVE @CNTDIG1,A0
|
||
MOVE @CNTDIG2,A1
|
||
OR A0,A1
|
||
MOVE A1,A1
|
||
JRNZ NODLY2
|
||
|
||
MOVE @SLOW_DWN,A0
|
||
INC A0
|
||
MOVE A0,@SLOW_DWN
|
||
CMPI 190,A0
|
||
JRNZ SNW1
|
||
CREATE FUTUREPID,HURRY
|
||
RETS
|
||
SNW1 CMPI 280,A0
|
||
JRLO PAUSE2X2
|
||
;PLAYER HAS DILLY DALLIED, SEND A BOMB DOWN AT HIM
|
||
MOVI yousuck,A0
|
||
CALLA ONESND
|
||
MOVE @PLYRPRCS,A0,L
|
||
JRZ NODLY
|
||
MOVE *A0(DEAD),A7
|
||
JRNZ NODLY
|
||
MOVE *A0(DELYDET),A7
|
||
JRNZ NODLY
|
||
MOVE A0,A7
|
||
CLR A2
|
||
CALLA WARP_KIL
|
||
NODLY
|
||
MOVE @PLYRPRCS+32,A0,L
|
||
JRZ NODLY2
|
||
MOVE *A0(DEAD),A7
|
||
JRNZ NODLY2
|
||
MOVE *A0(DELYDET),A7
|
||
JRNZ NODLY2
|
||
MOVE A0,A7
|
||
CLR A2
|
||
CALLA WARP_KIL
|
||
NODLY2
|
||
CLR A0
|
||
MOVE A0,@SLOW_DWN
|
||
PAUSE2X2
|
||
RETS
|
||
SLD
|
||
CLR A0
|
||
MOVE A0,@SLOW_DWN
|
||
DIE
|
||
.DEF LEAVE
|
||
LEAVE
|
||
;LEAVE THIS AREA
|
||
MOVE @HALT,A0
|
||
JANZ SUCIDE
|
||
MOVK 5,A0
|
||
MOVE A0,@KEEP3L
|
||
MOVI TXTSND1,A0
|
||
CALLA ONESND
|
||
LTOP0 MOVK 19,A0
|
||
MOVE A0,@KEEP2L
|
||
MOVI JMPSND,A0
|
||
CALLA ONESND
|
||
LTOP
|
||
MOVE @HALT,A0
|
||
JANZ SUCIDE
|
||
MOVI 0C0CH,A6
|
||
MOVI [69,0200],A9 ;SCRN Y/X
|
||
MOVI RD15FONT,A11 ;FONT TABLE
|
||
CLR A0
|
||
MOVE A0,@WRLD
|
||
MOVK 2,A10 ;Y,X SPACING BETWEEN CHARCTERS
|
||
CLR A0
|
||
MOVI EXITAREA,A8
|
||
JSRP STRCNRM
|
||
SLEEPK 1
|
||
MOVE @KEEP2L,A0
|
||
DEC A0
|
||
MOVE A0,@KEEP2L
|
||
JRNN LTOP
|
||
SLEEPK 10
|
||
MOVE @KEEP3L,A0
|
||
DEC A0
|
||
MOVE A0,@KEEP3L
|
||
JRNN LTOP0
|
||
MOVI TXTSND2,A0
|
||
CALLA ONESND
|
||
DIE
|
||
|
||
HURRY
|
||
MOVE @HALT,A0
|
||
JRNZ SLD
|
||
MOVK 7,A0
|
||
MOVE A0,@KEEP3
|
||
MOVI TXTSND1,A0
|
||
CALLA ONESND
|
||
TOP0 MOVK 19,A0
|
||
MOVE A0,@KEEP2
|
||
MOVI JMPSND,A0
|
||
CALLA ONESND
|
||
TOP
|
||
MOVE @HALT,A0
|
||
JRNZ SLD
|
||
MOVI 0C0CH,A6
|
||
MOVI [80,0200],A9 ;SCRN Y/X
|
||
MOVI RD15FONT,A11 ;FONT TABLE
|
||
CLR A0
|
||
MOVE A0,@WRLD
|
||
MOVK 2,A10 ;Y,X SPACING BETWEEN CHARCTERS
|
||
CLR A0
|
||
MOVI HURY,A8
|
||
JSRP STRCNRM
|
||
SLEEPK 1
|
||
MOVE @KEEP2,A0
|
||
DEC A0
|
||
MOVE A0,@KEEP2
|
||
JRNN TOP
|
||
SLEEPK 10
|
||
MOVE @KEEP3,A0
|
||
DEC A0
|
||
MOVE A0,@KEEP3
|
||
JRNN TOP0
|
||
MOVI TXTSND2,A0
|
||
CALLA ONESND
|
||
DIE
|
||
TXTSND1 .WORD >F3F7,>8,>80AE,0
|
||
TXTSND2 .WORD >F3F7,>8,>80B1,0
|
||
JMPSND .WORD >F48E,>18,>813D,0 ;FIEND JUMP SND
|
||
yousuck .word >f9a0,10,>80c5,0 ;You suck at this game!
|
||
|
||
HURY .BYTE "HURRY UP!",0
|
||
EXITAREA .BYTE "EXIT THIS AREA!",0
|
||
CUT0 .BYTE "ORCUS WARP BONUS",0
|
||
CUT1 .BYTE "POINTS AWARDED 50,000",0
|
||
CUT2 .BYTE "HOSTAGES",0
|
||
CUT3 .BYTE "FLAGS",0
|
||
CUT4 .BYTE "GEMS",0
|
||
CUT5 .BYTE "KEYS",0
|
||
CUT6 .BYTE "100",0
|
||
CUT7 .BYTE "10",0
|
||
|
||
WCUT0 .BYTE "WEASEL WARP BONUS",0
|
||
WCUT1 .BYTE "POINTS AWARDED 40,000",0
|
||
WCUT2 .BYTE "HOSTAGES",0
|
||
WCUT3 .BYTE "FLAGS",0
|
||
WCUT4 .BYTE "GEMS",0
|
||
WCUT5 .BYTE "KEYS",0
|
||
WCUT6 .BYTE "50",0
|
||
WCUT7 .BYTE "10",0
|
||
|
||
HSURE1 .BYTE "BOMBS SHOULD BE",0
|
||
HSURE2 .BYTE "USED TO BLOW UP",0
|
||
HSURE3 .BYTE "BIG STUFF LIKE",0
|
||
HSURE4 .BYTE "TRUCKS AND TANKS.",0
|
||
HSURE5 .BYTE "BOMBS ALSO BLOW",0
|
||
HSURE6 .BYTE "UP LAND MINES AND",0
|
||
HSURE7 .BYTE "BARRELS. YOU ALSO",0
|
||
HSURE8 .BYTE "BECOME INVULNERABLE",0
|
||
HSURE9 .BYTE "FOR 1 SECOND AFTER",0
|
||
HSURE10 .BYTE "DROPPING A BOMB.",0
|
||
|
||
KSURE1 .BYTE "COLLECTING 220 KEYS",0
|
||
KSURE1B .BYTE "COLLECTING 200 KEYS",0
|
||
KSURE2 .BYTE "ALLOWS ENTRY INTO",0
|
||
KSURE3 .BYTE "THE PLEASURE DOMES",0
|
||
KSURE4 .BYTE "AT THE END OF THE",0
|
||
KSURE5 .BYTE "GAME. KEYS ALSO",0
|
||
KSURE6 .BYTE "OPEN UP SECRET PATHS",0
|
||
KSURE7 .BYTE "HIDDEN IN THE GAME!",0
|
||
|
||
WSURE1 .BYTE "INSTANT WARPS APPEAR",0
|
||
WSURE2 .BYTE "THROUGHOUT THE GAME.",0
|
||
WSURE3 .BYTE "THEY WILL WARP YOU",0
|
||
WSURE4 .BYTE "TO A NEW AREA AND A",0
|
||
WSURE5 .BYTE "FREE MAN. AFTER YOU",0
|
||
WSURE6 .BYTE "CLEAR THAT AREA, YOU",0
|
||
WSURE7 .BYTE "WILL WARP RIGHT BACK",0
|
||
WSURE8 .BYTE "TO WHERE YOU STARTED.",0
|
||
|
||
SURE1 .BYTE "PASSWORDS ARE FOUND",0
|
||
SURE2 .BYTE "THROUGHOUT THE GAME.",0
|
||
SURE3 .BYTE "DO YOU HAVE ONE?",0
|
||
SURE4 .BYTE "NO",0
|
||
SURE5 .BYTE "YES",0
|
||
.EVEN
|
||
|
||
BRGHT .EQU >0C0C ;GREEN IN SCOREPAL
|
||
COLORS .EQU >2525 ;WHITE IN SCOREPAL
|
||
COLORA .EQU >3E3E ;COLOR CYCLE IN SCOREPAL
|
||
SCRNTOP .EQU 100
|
||
|
||
.REF OWINDOW,CWINDOW,RD7FONT,CYCSPECT,OBJPTR,BEEP1,P1CTRL,P2CTRL
|
||
.REF sleep_var,INEXP
|
||
.DEF R_U_SURE,BMB_HELP,KEY_HELP
|
||
BMB_HELP2
|
||
SLEEP 180
|
||
BMB_HELP
|
||
MOVE @WORLDTLY+16,A0
|
||
CMPI 11A0H-60,A0
|
||
JALT SUCIDE
|
||
SLEEPK 1
|
||
MOVI BMBPID,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA EXISTP
|
||
* Z BIT SET = NO MATCH, A0 = 0
|
||
JRZ BMB_HELP
|
||
MOVE @WORLDTLY+16,A0
|
||
CMPI 11A0H-60,A0
|
||
JALT SUCIDE
|
||
|
||
MOVE @PLYRPRCS,A0,L
|
||
JRZ BMH1
|
||
MOVE *A0(DEAD),A0
|
||
JRNZ BMB_HELP2
|
||
BMH1 MOVE @PLYRPRCS+32,A0,L
|
||
JRZ BMH2
|
||
MOVE *A0(DEAD),A0
|
||
JRNZ BMB_HELP2
|
||
BMH2 SLEEPK 1
|
||
MOVE @SHK_ON,A0
|
||
JRNZ BMH2
|
||
MOVI CLSNEUT|TYPTEXT|SUBTXT,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA EXISTOBJ
|
||
JRNZ BMH2
|
||
MOVE @WFLG,A0
|
||
JRNZ BMH2
|
||
SLEEPK 10
|
||
XBMH2 SLEEPK 1
|
||
MOVE @SHK_ON,A0
|
||
JRNZ XBMH2
|
||
MOVI CLSNEUT|TYPTEXT|SUBTXT,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA EXISTOBJ
|
||
JRNZ XBMH2
|
||
MOVE @WFLG,A0
|
||
JRNZ XBMH2
|
||
MOVI HELPPID,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA EXISTP
|
||
JRNZ XBMH2
|
||
|
||
MOVI HELPPID,A0
|
||
MOVE A0,*A13(PROCID)
|
||
|
||
.REF SLIDEIN
|
||
MOVI SLIDEIN,A0
|
||
CALLA ONESND
|
||
|
||
MOVK 1,A0
|
||
MOVE A0,@HALT
|
||
|
||
MOVI [41+SCRNTOP,200],A10
|
||
MOVI >00860093,A8
|
||
JSRP OWINDOW ;OPEN THE WINDOW
|
||
MOVE A8,@OBJPTR,L
|
||
|
||
MOVI [0100-18,0200],A9 ;SCRN Y/X
|
||
MOVI HSURE1,A8
|
||
MOVK 1,A0
|
||
MOVE A0,@LOWZ
|
||
CLR A0
|
||
MOVI COLORS,A6
|
||
MOVI RD7FONT,A11 ;BIG OLD LETTERS
|
||
MOVI [0,1],A10 ;ONE SPACE BETWEEN LETTERS
|
||
JSRP STRCNRMO ;OUTPUT "PRESS START" OR "INSERT COIN"
|
||
|
||
MOVI [0112-18,0200],A9 ;SCRN Y/X
|
||
MOVI HSURE2,A8
|
||
MOVK 1,A0
|
||
MOVE A0,@LOWZ
|
||
CLR A0
|
||
MOVI COLORS,A6
|
||
JSRP STRCNRMO ;OUTPUT "PRESS START" OR "INSERT COIN"
|
||
|
||
MOVI [0124-18,0200],A9 ;SCRN Y/X
|
||
MOVI HSURE3,A8
|
||
MOVK 1,A0
|
||
MOVE A0,@LOWZ
|
||
CLR A0
|
||
MOVI COLORS,A6
|
||
JSRP STRCNRMO ;OUTPUT "PRESS START" OR "INSERT COIN"
|
||
|
||
MOVI [0136-18,0200],A9 ;SCRN Y/X
|
||
MOVI HSURE4,A8
|
||
MOVK 1,A0
|
||
MOVE A0,@LOWZ
|
||
CLR A0
|
||
MOVI COLORS,A6 ;BRIGHT COLOR
|
||
JSRP STRCNRMO
|
||
|
||
MOVI [0148-18,0200],A9 ;SCRN Y/X
|
||
MOVI HSURE5,A8
|
||
MOVK 1,A0
|
||
MOVE A0,@LOWZ
|
||
CLR A0
|
||
MOVI COLORS,A6
|
||
JSRP STRCNRMO
|
||
|
||
MOVI [0160-18,0200],A9 ;SCRN Y/X
|
||
MOVI HSURE6,A8
|
||
MOVK 1,A0
|
||
MOVE A0,@LOWZ
|
||
CLR A0
|
||
MOVI COLORS,A6
|
||
JSRP STRCNRMO
|
||
|
||
MOVI [0172-18,0200],A9 ;SCRN Y/X
|
||
MOVI HSURE7,A8
|
||
MOVK 1,A0
|
||
MOVE A0,@LOWZ
|
||
CLR A0
|
||
MOVI COLORS,A6
|
||
JSRP STRCNRMO
|
||
|
||
MOVI [0184-18,0200],A9 ;SCRN Y/X
|
||
MOVI HSURE8,A8
|
||
MOVK 1,A0
|
||
MOVE A0,@LOWZ
|
||
CLR A0
|
||
MOVI COLORS,A6
|
||
JSRP STRCNRMO
|
||
|
||
MOVI [0196-18,0200],A9 ;SCRN Y/X
|
||
MOVI HSURE9,A8
|
||
MOVK 1,A0
|
||
MOVE A0,@LOWZ
|
||
CLR A0
|
||
MOVI COLORS,A6
|
||
JSRP STRCNRMO
|
||
|
||
MOVI [0208-18,0200],A9 ;SCRN Y/X
|
||
MOVI HSURE10,A8
|
||
BMBOUT
|
||
MOVK 1,A0
|
||
MOVE A0,@LOWZ
|
||
CLR A0
|
||
MOVI COLORS,A6
|
||
JSRP STRCNRMO
|
||
|
||
MOVI 60*9+30,a0
|
||
CALLA sleep_var
|
||
|
||
* TIME IS UP!
|
||
MOVI CLSNEUT|TYPTEXT|SUBTXT,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA KILOBJ
|
||
MOVI SLIDEIN,A0
|
||
CALLA ONESND
|
||
MOVE @OBJPTR,A8,L
|
||
JSRP CWINDOW
|
||
CLR A0
|
||
MOVE A0,@HALT
|
||
DIE
|
||
WARP_HELP
|
||
.DEF WARP_HELP
|
||
SLEEP 270
|
||
WBMH2 SLEEPK 1
|
||
MOVE @SHK_ON,A0
|
||
JRNZ WBMH2
|
||
MOVI CLSNEUT|TYPTEXT|SUBTXT,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA EXISTOBJ
|
||
JRNZ WBMH2
|
||
MOVE @WFLG,A0
|
||
JRNZ WBMH2
|
||
|
||
SLEEPK 10
|
||
|
||
WKBMH2 SLEEPK 1
|
||
MOVE @SHK_ON,A0
|
||
JRNZ WKBMH2
|
||
MOVI CLSNEUT|TYPTEXT|SUBTXT,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA EXISTOBJ
|
||
JRNZ WKBMH2
|
||
MOVE @WFLG,A0
|
||
JRNZ WBMH2
|
||
MOVI HELPPID,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA EXISTP
|
||
JRNZ WBMH2
|
||
|
||
MOVI HELPPID,A0
|
||
MOVE A0,*A13(PROCID)
|
||
|
||
MOVI SLIDEIN,A0
|
||
CALLA ONESND
|
||
|
||
MOVK 1,A0
|
||
MOVE A0,@HALT
|
||
|
||
MOVI [41+SCRNTOP,200],A10
|
||
MOVI >0070009D,A8
|
||
JSRP OWINDOW ;OPEN THE WINDOW
|
||
MOVE A8,@OBJPTR,L
|
||
|
||
MOVI [0100-6,0200],A9 ;SCRN Y/X
|
||
MOVI WSURE1,A8
|
||
MOVK 1,A0
|
||
MOVE A0,@LOWZ
|
||
CLR A0
|
||
MOVI COLORS,A6
|
||
MOVI RD7FONT,A11 ;BIG OLD LETTERS
|
||
MOVI [0,1],A10 ;ONE SPACE BETWEEN LETTERS
|
||
JSRP STRCNRMO ;OUTPUT "PRESS START" OR "INSERT COIN"
|
||
|
||
MOVI [0112-6,0200],A9 ;SCRN Y/X
|
||
MOVI WSURE2,A8
|
||
MOVK 1,A0
|
||
MOVE A0,@LOWZ
|
||
CLR A0
|
||
MOVI COLORS,A6
|
||
JSRP STRCNRMO ;OUTPUT "PRESS START" OR "INSERT COIN"
|
||
|
||
MOVI [0124-6,0200],A9 ;SCRN Y/X
|
||
MOVI WSURE3,A8
|
||
MOVK 1,A0
|
||
MOVE A0,@LOWZ
|
||
CLR A0
|
||
MOVI COLORS,A6
|
||
JSRP STRCNRMO ;OUTPUT "PRESS START" OR "INSERT COIN"
|
||
|
||
MOVI [0136-6,0200],A9 ;SCRN Y/X
|
||
MOVI WSURE4,A8
|
||
MOVK 1,A0
|
||
MOVE A0,@LOWZ
|
||
CLR A0
|
||
MOVI COLORS,A6 ;BRIGHT COLOR
|
||
JSRP STRCNRMO
|
||
|
||
MOVI [0148-6,0200],A9 ;SCRN Y/X
|
||
MOVI WSURE5,A8
|
||
MOVK 1,A0
|
||
MOVE A0,@LOWZ
|
||
CLR A0
|
||
MOVI COLORS,A6
|
||
JSRP STRCNRMO
|
||
|
||
MOVI [0160-6,0200],A9 ;SCRN Y/X
|
||
MOVI WSURE6,A8
|
||
MOVK 1,A0
|
||
MOVE A0,@LOWZ
|
||
CLR A0
|
||
MOVI COLORS,A6
|
||
JSRP STRCNRMO
|
||
|
||
MOVI [0172-6,0200],A9 ;SCRN Y/X
|
||
MOVI WSURE7,A8
|
||
MOVK 1,A0
|
||
MOVE A0,@LOWZ
|
||
CLR A0
|
||
MOVI COLORS,A6
|
||
JSRP STRCNRMO
|
||
|
||
MOVI [0184-6,0200],A9 ;SCRN Y/X
|
||
MOVI WSURE8,A8
|
||
JRUC BMBOUT
|
||
KEY_HELP
|
||
SLEEPK 2
|
||
MOVE @P1DATA+TKEYS,A0
|
||
MOVE @P2DATA+TKEYS,A1
|
||
OR A0,A1
|
||
JRZ KEY_HELP
|
||
CMPI 4,A1
|
||
JAGE SUCIDE
|
||
|
||
KBMH2 SLEEPK 1
|
||
MOVE @SHK_ON,A0
|
||
JRNZ KBMH2
|
||
MOVI CLSNEUT|TYPTEXT|SUBTXT,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA EXISTOBJ
|
||
JRNZ KBMH2
|
||
MOVE @WFLG,A0
|
||
JRNZ KBMH2
|
||
|
||
SLEEPK 10
|
||
|
||
XKBMH2 SLEEPK 1
|
||
MOVE @SHK_ON,A0
|
||
JRNZ XKBMH2
|
||
MOVI CLSNEUT|TYPTEXT|SUBTXT,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA EXISTOBJ
|
||
JRNZ XKBMH2
|
||
MOVE @WFLG,A0
|
||
JRNZ KBMH2
|
||
MOVI HELPPID,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA EXISTP
|
||
JRNZ KBMH2
|
||
|
||
MOVI HELPPID,A0
|
||
MOVE A0,*A13(PROCID)
|
||
|
||
MOVI SLIDEIN,A0
|
||
CALLA ONESND
|
||
|
||
MOVK 1,A0
|
||
MOVE A0,@HALT
|
||
|
||
MOVI [41+SCRNTOP,200],A10
|
||
MOVI >00660093,A8
|
||
JSRP OWINDOW ;OPEN THE WINDOW
|
||
MOVE A8,@OBJPTR,L
|
||
|
||
MOVI [0100,0200],A9 ;SCRN Y/X
|
||
MOVI KSURE1,A8
|
||
|
||
move @SWITCH+>30,a7
|
||
btst 7,a7
|
||
jrnz abl2500 ;BR=220 KEYS
|
||
MOVI KSURE1B,A8
|
||
abl2500
|
||
MOVK 1,A0
|
||
MOVE A0,@LOWZ
|
||
CLR A0
|
||
MOVI COLORS,A6
|
||
MOVI RD7FONT,A11 ;BIG OLD LETTERS
|
||
MOVI [0,1],A10 ;ONE SPACE BETWEEN LETTERS
|
||
JSRP STRCNRMO ;OUTPUT "PRESS START" OR "INSERT COIN"
|
||
|
||
MOVI [0112,0200],A9 ;SCRN Y/X
|
||
MOVI KSURE2,A8
|
||
MOVK 1,A0
|
||
MOVE A0,@LOWZ
|
||
CLR A0
|
||
MOVI COLORS,A6
|
||
JSRP STRCNRMO ;OUTPUT "PRESS START" OR "INSERT COIN"
|
||
|
||
MOVI [0124,0200],A9 ;SCRN Y/X
|
||
MOVI KSURE3,A8
|
||
MOVK 1,A0
|
||
MOVE A0,@LOWZ
|
||
CLR A0
|
||
MOVI COLORS,A6
|
||
JSRP STRCNRMO ;OUTPUT "PRESS START" OR "INSERT COIN"
|
||
|
||
MOVI [0136,0200],A9 ;SCRN Y/X
|
||
MOVI KSURE4,A8
|
||
MOVK 1,A0
|
||
MOVE A0,@LOWZ
|
||
CLR A0
|
||
MOVI COLORS,A6 ;BRIGHT COLOR
|
||
JSRP STRCNRMO
|
||
|
||
MOVI [0148,0200],A9 ;SCRN Y/X
|
||
MOVI KSURE5,A8
|
||
MOVK 1,A0
|
||
MOVE A0,@LOWZ
|
||
CLR A0
|
||
MOVI COLORS,A6
|
||
JSRP STRCNRMO
|
||
|
||
MOVI [0160,0200],A9 ;SCRN Y/X
|
||
MOVI KSURE6,A8
|
||
MOVK 1,A0
|
||
MOVE A0,@LOWZ
|
||
CLR A0
|
||
MOVI COLORS,A6
|
||
JSRP STRCNRMO
|
||
|
||
MOVI [0172,0200],A9 ;SCRN Y/X
|
||
MOVI KSURE7,A8
|
||
JRUC BMBOUT
|
||
|
||
R_U_SURE
|
||
MOVE A9,@TEMP,L
|
||
MOVI COLRPID,A0
|
||
CALLA KIL1C
|
||
CREATE COLRPID,CYCSPECT ;START COLOR CYCLE PROCESS
|
||
MOVI [41+SCRNTOP,200],A10
|
||
|
||
SLEEPK 32
|
||
|
||
MOVK 1,A0
|
||
MOVE A0,@HALT
|
||
MOVI SLIDEIN,A0
|
||
CALLA ONESND
|
||
|
||
MOVI >00660093,A8
|
||
JSRP OWINDOW ;OPEN THE WINDOW
|
||
MOVE A8,@OBJPTR,L
|
||
|
||
MOVI [097,0200],A9 ;SCRN Y/X
|
||
MOVI SURE1,A8
|
||
MOVK 1,A0
|
||
MOVE A0,@LOWZ
|
||
CLR A0
|
||
MOVI COLORA,A6 ;BRIGHT COLOR
|
||
MOVI RD7FONT,A11 ;BIG OLD LETTERS
|
||
MOVI [0,1],A10 ;ONE SPACE BETWEEN LETTERS
|
||
JSRP STRCNRMO ;OUTPUT "PRESS START" OR "INSERT COIN"
|
||
|
||
MOVI [0110-3,0200],A9 ;SCRN Y/X
|
||
MOVI SURE2,A8
|
||
MOVK 1,A0
|
||
MOVE A0,@LOWZ
|
||
CLR A0
|
||
MOVI COLORA,A6 ;BRIGHT COLOR
|
||
JSRP STRCNRMO ;OUTPUT "PRESS START" OR "INSERT COIN"
|
||
|
||
MOVI [0125-3,0200],A9 ;SCRN Y/X
|
||
MOVI SURE3,A8
|
||
MOVK 1,A0
|
||
MOVE A0,@LOWZ
|
||
CLR A0
|
||
MOVI COLORA,A6 ;BRIGHT COLOR
|
||
JSRP STRCNRMO ;OUTPUT "PRESS START" OR "INSERT COIN"
|
||
|
||
MOVI [0141-1,0220],A9 ;SCRN Y/X
|
||
MOVI SURE4,A8
|
||
MOVI RD15FONT,A11 ;BIG OLD LETTERS
|
||
MOVK 1,A0
|
||
MOVE A0,@LOWZ
|
||
CLR A0
|
||
MOVI COLORS,A6 ;BRIGHT COLOR
|
||
JSRP STRCNRMO
|
||
|
||
MOVI [0165,0220],A9 ;SCRN Y/X
|
||
MOVI SURE5,A8
|
||
MOVK 1,A0
|
||
MOVE A0,@LOWZ
|
||
CLR A0
|
||
MOVI COLORS,A6
|
||
JSRP STRCNRMO
|
||
|
||
* TIME IS UP!
|
||
MOVI [160,0],A0
|
||
MOVI [136-3,0],A1
|
||
MOVI RGTARRW,A2
|
||
MOVI >7FFE,A3
|
||
MOVI DMAWNZ|M_NOCOLL,A4
|
||
MOVI CLSNEUT|TYPTEXT|SUBTXT,A5
|
||
CLR A6
|
||
CLR A7
|
||
CALLA BEGINOBJ
|
||
MOVE @TEMP,A9,L
|
||
MOVI BEEP1,A0
|
||
CALLA ONESND
|
||
|
||
MOVI 10*60,A10
|
||
CLR A11
|
||
ARWTOP SLEEPK 1
|
||
DEC A10
|
||
JRN SELECT
|
||
CALLR GETJ
|
||
JRNZ SELECT
|
||
ANDI 0FH,A2
|
||
JRNZ A_MV
|
||
; STICK IS NOT BEING TOUCHED
|
||
JRUC ARWTOP
|
||
GETJ MOVE *A9(OPLINK),A0,L
|
||
MOVE *A0(PNUM),A0
|
||
CMPI 1,A0
|
||
JRNZ GETJ2
|
||
MOVE @SWITCH,A2 ;MOVE PLAYER SWITCHES TO A5 (32 BIT PORT)
|
||
NOT A2
|
||
move @SWITCH+16,a1 ;Chk for impatience
|
||
not a1
|
||
BTST 2,A1
|
||
RETS
|
||
GETJ2 MOVE @SWITCH,A2 ;MOVE PLAYER SWITCHES TO A5 (32 BIT PORT)
|
||
NOT A2
|
||
SRL 8,A2
|
||
move @SWITCH+16,a1 ;Chk for impatience
|
||
not a1
|
||
BTST 5,A1
|
||
RETS
|
||
A_MV:
|
||
BTST BMPDOWN,A2
|
||
JRZ PLYR_UP
|
||
;MOVE DOWN TO YES
|
||
MOVE A11,A11
|
||
JRNZ ARWTOP
|
||
AMC MOVE *A8(OYPOS),A1
|
||
MOVE @WORLDTLY+16,A0
|
||
SUB A0,A1
|
||
CMPI 133,A1
|
||
JRZ AMC1
|
||
MOVI 133,A1
|
||
ADD A0,A1
|
||
JRUC AMC2
|
||
AMC1 MOVI 133+18H,A1
|
||
ADD A0,A1
|
||
AMC2 MOVE A1,*A8(OYPOS)
|
||
XORI 1,A11
|
||
MOVI BEEP1,A0
|
||
CALLA ONESND
|
||
JRUC ARWTOP
|
||
PLYR_UP:
|
||
BTST BMPUP,A2
|
||
JRZ ARWTOP
|
||
MOVE A11,A11
|
||
JRZ ARWTOP
|
||
;MOVE UP TO NO
|
||
JRUC AMC
|
||
|
||
SELECT
|
||
MOVI CLSNEUT|TYPTEXT|SUBTXT,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA KILOBJ
|
||
MOVI SLIDEIN,A0
|
||
CALLA ONESND
|
||
MOVE @OBJPTR,A8,L
|
||
MOVE A11,@TEMP
|
||
MOVE A9,-*A12,L
|
||
JSRP CWINDOW
|
||
MOVE *A12+,A9,L
|
||
MOVE @TEMP,A11
|
||
CLR A0
|
||
MOVE A0,@HALT
|
||
RETP
|
||
|
||
|
||
.END
|
||
|
||
|
||
|
||
|