total-carnage/T72.ASM

3420 lines
62 KiB
NASM
Raw Permalink Blame History

This file contains invisible Unicode characters!

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

**************************************************************
*
* Software: Mark Turmell
* Initiated: 3/8/91
*
* Modified: !
*
* COPYRIGHT (C) 1991 WILLIAMS ELECTRONICS GAMES, INC.
*
*.Last mod - 12/2/91 17:56
**************************************************************
.FILE 'T72.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\GSP.INC"
.INCLUDE "\VIDEO\SYS\SYS.INC" ;Z UNIT SYSTEM EQUATES
.INCLUDE "\VIDEO\SYS\MACROS.HDR" ;MACROS DEFINITIONS
.INCLUDE "MAC2.ASM" ;MACRO 2 DEFINITIONS
.INCLUDE "IMGTBL.GLO"
.INCLUDE "JET.TBL"
.INCLUDE "JEEP.TBL"
.INCLUDE "GAME.EQU"
.INCLUDE "AUDIT.EQU"
;
;SOUND HEADERS USED HERE
;
.REF EXP2HIB,THUMP,CANNON,FIREDI,ALTEXP5,KEYSND2,CRSSND2,ALTEXP1
.REF JEEPSND,HORNSND,HORN2,WRPSND,ONESNDOVR,SCASH
;
;SYMBOLS EXTERNALLY DEFINED
;
.REF EN_CURRENT,STATUS,WVBONUS,RNDRNG
.REF SITLST
.REF fry_plyrs,WINNER,LOSER
.REF MORTAR_GRNT,DOLORD,PLYRPRCS
.REF STRLNRMO,HEXTOASC,WRLD,STRCNRMO,RD15FONT
.REF OFFSCRN,spidmom_start,JET_KILLS
.ref missile_firexy
.REF RNDRNG0,ZONE_TXT2,SKIPR_CNT
.REF GET_WVADDR,GETFPAL,JEEPP2,SENDGRN,GOBACK
.REF HULK_DN,CYCLEON,INHERE,COLCYC
.REF GETCPNT,BAKMODS,BGND_UD1,PATHA
.REF HALT,GPALOBJ,TTORSO,RANDPER,RANDOM,PLYROBJS,RANGRAND,FRANIM
.ref FRANIMQ
.REF PCNT,FLASHME,SHAKER,MORE2,FRAIT,DO_ALL_STUFF,SCRADD2,SCRTST
.REF P1DATA,P2DATA,MORE3,FLAMES,HZSPD,OBJON,OBJOFF
.REF ONARRW,TARGET_NUM,TARGET,WAVE,ARWOFF,ICONS_DN
;
;SYMBOLS DEFINED IN THIS FILE
;
.DEF SPAWN_HJP,DO_WINNER,JEEP2,JEEP,JEEP4,GET_AWAY
.DEF RGTJETS
.DEF STRT_AJET
.DEF FAKET,T72PNTR,VULN,BTR60A,NO_BONUS,JETS
.DEF TBLST,SHAKEME,SPAWN_T72,SPAWN_MOM
.DEF HIT_TNK,HIT_TNK2,DOBTR60,BONE,ROAD,ROAD2
.DEF DOSWAP,AKHLIMO
;
;UNINITIALIZED RAM DEFINITIONS
;
.BSS GET_AWAY,16
.BSS T72PNTR,32
.BSS PLYRAD,16
.BSS NO_BONUS,16 ;0=YES BIG BONUS, 1=NONE!
.BSS TOPFLG,16
.BSS BOTFLG,16
.BSS LANES,16
.BSS TEMP,16
.BSS PALTMP0,16*32*2 ;ALLOCATE 2 X COLOR AREA IN RAM
;
;EQUATES FOR THIS FILE
;
BTHITS .EQU 9 ;21 ;19
BTHITS2 .EQU 6 ;19
BTHITS3 .EQU 14 ;SCUD TRUCK
T72HITS .EQU 30 ;35 ;40
JEEPHITS .EQU 3
;
;T72 TANK DATA STRUCTURE
;
KPTSOBJ .EQU PDATA ;UHL
;USED IN ARAB.ASM
IDEAD .EQU PDATA+32 ;UHW
;MYPLYR .EQU PDATA+48 ;UHW PLAYER 1 OR 2 FIRED ME
TNKL .EQU PDATA+64 ;UHL TANK LEFT PTR
BRL .EQU PDATA+96 ;UHL BIG GUN BARREL
TRDLF .EQU PDATA+128 ;UHL TANK LEFT/FRONT TREAD
TRDRF .EQU PDATA+160 ;UHL TANK RGT/FRONT TREAD
TRDLS .EQU PDATA+192 ;UHL TANK LEFT/SIDE TREAD
TRDRS .EQU PDATA+224 ;UHL TANK RGT/SIDE TREAD
SHADR .EQU PDATA+256 ;UHL SHADOW ON RIGHT SIDE OF TANK
SHADF .EQU PDATA+288 ;UHL SHADOW IN FRONT OF TANK
MAXYMV .EQU PDATA+320 ;UHW MAX Y LINES FOR MOVE
HITS .EQU PDATA+336 ;UHW HITS ABSORBED
KPTSO .EQU PDATA+352 ;UHL
KPGUN .EQU PDATA+384 ;UHL
YVL .EQU PDATA+416 ;UHL
LANE .EQU PDATA+448 ;UHW USED FOR JEEPS ONLY
MYTYP .EQU PDATA+448 ;UHW 0-3
CNTR .EQU PDATA+464 ;UHW
TMPPTR .EQU PDATA+480 ;UHL TMPPTR FOR KILLING OFF SHELL
SCUD .EQU PDATA+512 ;UHW
;
;BTR60 WHEEL DATA STRUCTURE
;
KPBTRO .EQU PDATA
KPBTRP .EQU PDATA+32
MODY .EQU PDATA+64 ;UHL
ANICNT .EQU PDATA+96 ;UHW
BNCING .EQU PDATA+112 ;UHW
;
.BSS KEEPA,32
.TEXT
FROMLFT
;FROM LEFT SIDE JETS
MOVE @WORLDTLX+16,A8
SUBI 40,A8
MOVE @WORLDTLY+16,A9
ADDI 90,A9
MOVK 8,A10 ;DIR
movi -230,a11 ;Fuel
CREATE BOSSPID,missile_firexy
MOVE @WORLDTLX+16,A8
SUBI 40,A8
MOVE @WORLDTLY+16,A9
ADDI 150,A9
CREATE BOSSPID,missile_firexy
RETS
FROMRGT
;FROM RIGHT SIDE OF SCRN FROM LAST JET
MOVE @WORLDTLX+16,A8
ADDI 420,A8
MOVE @WORLDTLY+16,A9
ADDI 90,A9
MOVK 24,A10 ;DIR
movi -300,a11 ;Fuel
CREATE BOSSPID,missile_firexy
MOVE @WORLDTLX+16,A8
ADDI 420,A8
MOVE @WORLDTLY+16,A9
ADDI 150,A9
CREATE BOSSPID,missile_firexy
RETS
FROMRGT2
;FROM RIGHT SIDE OF SCRN FROM LAST JET
MOVE @WORLDTLX+16,A8
ADDI 420,A8
MOVE @WORLDTLY+16,A9
ADDI 120,A9
MOVK 24,A10 ;DIR
movi -300,a11 ;Fuel
CREATE BOSSPID,missile_firexy
MOVE @WORLDTLX+16,A8
ADDI 420,A8
MOVE @WORLDTLY+16,A9
ADDI 180,A9
CREATE BOSSPID,missile_firexy
RETS
;FROM LEFT SIDE OF SCRN FROM ALL JETS
MOVE @WORLDTLX+16,A8
SUBI 40,A8
MOVE @WORLDTLY+16,A9
ADDI 90,A9
MOVK 8,A10 ;DIR
movi -400,a11 ;Fuel
CREATE BOSSPID,missile_firexy
MOVE @WORLDTLX+16,A8
SUBI 40,A8
MOVE @WORLDTLY+16,A9
ADDI 140,A9
CREATE BOSSPID,missile_firexy
STRT_AJET
MOVE *A8(OPAL),A0,W
MOVE A0,@TEMP,W
CLR A6
CLR A7
MOVK 10,A9
MMTM SP,A13,A8
MOVE A13,@KEEPA,L
MOVE *A8(OFLAGS),A0
BTST B_FLIPH,A0
JRZ AD
;FACING LEFT
MOVE *A8(OXVAL),A10,L
ADDI [86H,0],A10
MOVE *A8(OYVAL),A11,L
SUBI [6,0],A11
FTJTLP
MOVI FTJETFLG,A0
MOVE A9,A1
SLL 4,A1
ADD A1,A0
MOVE *A0,A4,W
SLL 1,A1
MOVI TJETPC,A0
ADD A1,A0
MOVE *A0,A2,L
ADDI FTPJETYX,A1
MOVE *A1,A3,L
MOVE A11,A1
ADD A3,A1
SLL 16,A3
MOVE A10,A0
ADD A3,A0
MOVE A9,A5
SLL 4,A5
ADDI ZTBL,A5
MOVE *A5,A3
MOVI CLSNEUT|TYPJET,A5 ;TRUNK,A5
CALLA BEGINOBJ2
MOVE A8,*A13(PDATA+10*32),L
MOVE @TEMP,A0,W
MOVE A0,*A8(OPAL),W
MOVE @KEEPA,A0,L
MOVE A0,*A8(OPLINK),L
SUBK 32,A13
DSJ A9,FTJTLP
JRUC INH
AD
;FACING RIGHT
MOVE *A8(OXVAL),A10,L
ADDI [68H,0],A10
MOVE *A8(OYVAL),A11,L
SUBI [6,0],A11
;A10=X
;A11=Y
TJTLP
MOVI TJETFLG,A0
MOVE A9,A1
SLL 4,A1
ADD A1,A0
MOVE *A0,A4,W
SLL 1,A1
MOVI TJETPC,A0
ADD A1,A0
MOVE *A0,A2,L
ADDI TPJETYX,A1
MOVE *A1,A3,L
MOVE A11,A1
ADD A3,A1
SLL 16,A3
MOVE A10,A0
ADD A3,A0
MOVE A9,A5
SLL 4,A5
ADDI ZTBL,A5
MOVE *A5,A3
MOVI CLSNEUT|TYPJET,A5 ;TRUNK,A5
CALLA BEGINOBJ2
MOVE A8,*A13(PDATA+10*32),L
MOVE @TEMP,A0,W
MOVE A0,*A8(OPAL),W
MOVE @KEEPA,A0,L
MOVE A0,*A8(OPLINK),L
SUBK 32,A13
DSJ A9,TJTLP
INH
MMFM SP,A13,A0
CALLA DELOBJ
SLEEP 10*60 ;5*60
OFFSC0 SLEEP 60
MOVE *A8(OYPOS),A0
MOVE @WORLDTLY+16,A1
ADDI 160H,A1
CMP A0,A1
JRC OFFO
MOVE *A8(OXPOS),A0
MOVE @WORLDTLX+16,A1
ADDI 180,A0 ;WIDTH OF PLANE
CMP A0,A1
JRC OFFSC0
;OFF SCRN, DEL ALL PCS
JRUC OFFO
DOSWAP
;FOR JETS
;A10=P1DATA OR P2DATA
; CMPI P1DATA,A10
; JRNZ DOS1
; MOVE @JET_KILLS,A0
; ADDK 1,A0
; MOVE A0,@JET_KILLS
; JRUC DOS2
;DOS1
; MOVE @JET_KILLS+16,A0
; ADDK 1,A0
; MOVE A0,@JET_KILLS+16
;DOS2
SLEEP 200
PUSH A13
;PDATA=JTBOD
MOVK 10,A11
MOVI SWPPC,A10
SWP1 MOVE *A13(PDATA+32),A8,L
MOVE *A10+,A1,L
MOVE *A8(OFLAGS),A4
CALLA ANI
ADDK 32,A13
DSJ A11,SWP1
PULL A13
OFFSC SLEEP 60
MOVE *A8(OYPOS),A0
MOVE @WORLDTLY+16,A1
ADDI 160H,A1
CMP A0,A1
JRC OFFO
MOVE *A8(OXPOS),A0
MOVE @WORLDTLX+16,A1
ADDI 180,A0 ;WIDTH OF PLANE
CMP A0,A1
JRC OFFSC
NOP
OFFO
;OFF SCRN, DEL ALL PCS
PUSH A13
MOVK 10,A11
ASWP1 MOVE *A13(PDATA+32),A0,L
CALLA ISOBJ
JRZ SKPIT
MOVE *A0(OID),A1
CMPI CLSNEUT|TYPJET,A1
JRNZ SKPIT
CALLA DELOBJ
SKPIT ADDK 32,A13
DSJ A11,ASWP1
PULL A13
DIE
SWPPC .LONG JETWRECK,JTSMWNG2,JTBGWNG2,JTBGWNG2,JTWNGTP2,JTWHL,JTSHD1,JTSHD1
.LONG JTSHAD2A,JTSHAD3A
ZTBL .WORD 0,154,153,153,153,155,153,54,54,54,54
TPJETYX .LONG 0,[0,0],[0,0],[0,0],[31H,0],[0,0],0,0,[54H,0],0,[-1,0]
TJETPC .LONG 0,JTBOD,JTSMWNG,JTBGWNG,JTBGWNG,JTWNGTP,JTWHL,JTSHD1,JTSHD1
.LONG JTSHD2,JTSHD3
TJETFLG .WORD 0,DMAWNZ|M_PIXSCAN,DMAWNZ|M_PIXSCAN
.WORD DMAWNZ|M_PIXSCAN
.WORD DMAWNZ|M_PIXSCAN|M_FLIPV
.WORD DMAWNZ|M_PIXSCAN,DMAWNZ|M_PIXSCAN
.WORD DMAWNZ|M_NOCOLL,DMAWNZ|M_NOCOLL|M_FLIPV
.WORD DMAWNZ|M_NOCOLL
.WORD DMAWNZ|M_NOCOLL
;
FTPJETYX
.LONG 0,[0,0],[0,0],[0,0],[31H,0],[0,0],0,0,[54H,0],0,[-1,0]
FTJETFLG
.WORD 0,DMAWNZ|M_FLIPH|M_PIXSCAN,DMAWNZ|M_FLIPH|M_PIXSCAN
.WORD DMAWNZ|M_FLIPH|M_PIXSCAN
.WORD DMAWNZ|M_FLIPH|M_PIXSCAN|M_FLIPV
.WORD DMAWNZ|M_FLIPH|M_PIXSCAN,DMAWNZ|M_FLIPH|M_PIXSCAN
.WORD DMAWNZ|M_FLIPH|M_NOCOLL,DMAWNZ|M_FLIPH|M_NOCOLL|M_FLIPV
.WORD DMAWNZ|M_FLIPH|M_NOCOLL
.WORD DMAWNZ|M_FLIPH|M_NOCOLL
;JETS HEADING TO RIGHT DROPPING BOMBS
RGTJETS
SLEEP 60
MOVE @WORLDTLX+16,A0
CMPI 01200H,A0
JRLT RGTJETS
CALLA OFFSCRN
;OKAY TO START JETS COMING
DT1 SLEEPK 1
MOVE @HALT,A0
JRNZ DT1
MOVE @WORLDTLX+16,A0
CMPI 012F8H,A0
JRGT JDI
MOVE @WORLDTLX,A10,L
SUBI [0C4H,0],A10
MOVE @WORLDTLY,A11,L
ADDI [03CH,0],A11
CREATE0 RAJET
CREATE0 RAJET_SHAD
MOVI CRSSND,A0
CALLA ONESND
SLEEPK 1
MOVI CRSSND3,A0
CALLA ONESND
CALLR FROMLFT
SLEEP 70H
JRUC DT1
JDI DIE
CRSSND .WORD >FCF3,>3A,>80EA,0 ;CRUISE MISSILE COMING IN
CRSSND3 .WORD >F5F3,>3A,>80C6,0 ;CRUISE MISSILE COMING IN
;GRNTSHT .WORD >F54F,10,>80E7,0 ;GRUNT SHOOTS AT PLYR
RAJET
;A10=X
;A11=Y
PUSH A13
MOVK 6,A9
RJTLP
MOVI JETFLG3,A0
MOVE A9,A1
SLL 4,A1
ADD A1,A0
MOVE *A0,A4,W
SLL 1,A1
MOVI JETPC,A0
ADD A1,A0
MOVE *A0,A2,L
ADDI PJETYXB,A1
MOVE *A1,A3,L
MOVE A11,A1
ADD A3,A1
SLL 16,A3
MOVE A10,A0
ADD A3,A0
MOVI 0450,A3 ;79EH,A3
MOVI CLSNEUT|TYPGATE,A5
MOVI 0C8000H,A6
CLR A7
CALLA BEGINOBJ2
MOVE A8,*A13(PDATA),L
ADDK 32,A13
DSJ A9,RJTLP
PULL A13
MOVE *A13(PDATA),A8,L
MOVK 32,A10 ;*4=TIME OF ANIMATION
CREATE0 JT3
SLEEP 044H
PUSH A13
MOVK 6,A9
FDE MOVE *A13(PDATA),A0,L
CALLA DELOBJ
ADDK 32,A13
DSJ A9,FDE
PULL A13
DIE
RAJET_SHAD
;A10=X
;A11=Y
PUSH A13
ADDI [60,0],A11
ADDI [30,0],A10
MOVK 6,A9
RSJTLP
MOVI JETFLG4,A0
MOVE A9,A1
SLL 4,A1
ADD A1,A0
MOVE *A0,A4,W
SLL 1,A1
MOVI JETPC2,A0
ADD A1,A0
MOVE *A0,A2,L
ADDI PJETYX2,A1
MOVE *A1,A3,L
MOVE A11,A1
ADD A3,A1
SLL 16,A3
MOVE A10,A0
ADD A3,A0
MOVI 071,A3
MOVI CLSNEUT|TYPGATE,A5
MOVI 0C8000H,A6
CLR A7
CALLA BEGINOBJ2
MOVE A8,*A13(PDATA),L
ADDK 32,A13
DSJ A9,RSJTLP
PULL A13
SLEEP 044H
PUSH A13
MOVK 6,A9
DDE MOVE *A13(PDATA),A0,L
CALLA DELOBJ
ADDK 32,A13
DSJ A9,DDE
PULL A13
DIE
JETS
SLEEP 60+60
MOVK 4,A9
JT1 CREATE0 AJET
CREATE0 AJET_SHAD
SLEEPK 10
DSJS A9,JT1
MOVI CRSSND2,A0
CALLA ONESND
SLEEPK 1
MOVI CRSSND3,A0
CALLA ONESND
SLEEP 30H
MOVI CRSSND2,A0
CALLA ONESND
SLEEPK 1
MOVI CRSSND3,A0
CALLA ONESND
SLEEP 32H
CALLR FROMRGT2
MOVI CRSSND2,A0
CALLA ONESND
SLEEPK 1
MOVI CRSSND3,A0
CALLA ONESND
SLEEP 34H
CALLR FROMRGT
MOVI CRSSND2,A0
CALLA ONESND
SLEEPK 1
MOVI CRSSND3,A0
CALLA ONESND
JT8 SLEEP 130+4*60
MOVE @HALT,A0
JRNZ JT8
MOVI CLSNEUT|TYPGATE,A0
CALLA KIL1OBJC
DIE
AJET_SHAD
CLR A1
SLL 5,A9
ADDI JETYX2,A9
MOVE *A9,A10,L
MOVY A10,A11
SLL 16,A10
;A10=X
;A11=Y
MOVK 6,A9
SJTLP
MOVI JETFLG2,A0
MOVE A9,A1
SLL 4,A1
ADD A1,A0
MOVE *A0,A4,W
SLL 1,A1
MOVI JETPC2,A0
ADD A1,A0
MOVE *A0,A2,L
ADDI PJETYX2,A1
MOVE *A1,A3,L
MOVE A11,A1
ADD A3,A1
SLL 16,A3
MOVE A10,A0
ADD A3,A0
MOVI 071,A3
MOVI CLSNEUT|TYPGATE,A5
MOVI -0A0000H,A6
CLR A7
CALLA BEGINOBJ
DSJ A9,SJTLP
DIE
AJET
SLL 5,A9
ADDI JETYX,A9
MOVE *A9,A10,L
MOVY A10,A11
SLL 16,A10
;A10=X
;A11=Y
MOVK 6,A9
JTLP
MOVI JETFLG,A0
MOVE A9,A1
SLL 4,A1
ADD A1,A0
MOVE *A0,A4,W
SLL 1,A1
MOVI JETPC,A0
ADD A1,A0
MOVE *A0,A2,L
ADDI PJETYX,A1
MOVE *A1,A3,L
MOVE A11,A1
ADD A3,A1
SLL 16,A3
MOVE A10,A0
ADD A3,A0
MOVI 0450,A3 ;79EH,A3
MOVI CLSNEUT|TYPGATE,A5
MOVI -0A0000H,A6
CLR A7
CALLA BEGINOBJ
CMPI 6,A9
JRNZ NOFLM
CREATE0 JTFLMS
NOFLM DSJ A9,JTLP
DIE
JTFLMS
MOVI 30+(4*60/2),A10 ;*4=TIME OF ANIMATION
JT3 MOVI 440,A3 ;0790H,A3
MOVE A3,*A8(OZPOS)
JT2 MOVI FLMS,A9
JSRP FRANIMQ
DSJS A10,JT2
DIE
FLMS .LONG JTFLM1
.WORD 1
.LONG JTFLM2
.WORD 1
.LONG 0
PJETYX .LONG 0,[0,0],[0,0],[0,0],[31H,0],[0,0],[0FFFBH,70H],[0,0]
PJETYXB .LONG 0,[0,0],[0,0],[0,0],[31H,0],[0,0],[0FFFBH,0FF8DH],[0,0]
JETYX .LONG 0,[100,700],[35,1250],[150,1850],[100,2500]
JETPC .LONG 0,JTBOD,JTSMWNG,JTBGWNG,JTBGWNG,JTWNGTP,JTFLM1
JETFLG .WORD 0,DMAWNZ|M_NOCOLL|M_FLIPH,DMAWNZ|M_NOCOLL|M_FLIPH
.WORD DMAWNZ|M_NOCOLL|M_FLIPH
.WORD DMAWNZ|M_NOCOLL|M_FLIPH|M_FLIPV
.WORD DMAWNZ|M_NOCOLL|M_FLIPH,DMAWNZ|M_NOCOLL|M_FLIPH
.WORD DMAWNZ|M_NOCOLL|M_FLIPH
JETFLG3 .WORD 0,DMAWNZ|M_NOCOLL,DMAWNZ|M_NOCOLL
.WORD DMAWNZ|M_NOCOLL
.WORD DMAWNZ|M_NOCOLL|M_FLIPV
.WORD DMAWNZ|M_NOCOLL,DMAWNZ|M_NOCOLL
.WORD DMAWNZ|M_NOCOLL
PJETYX2 .LONG 0,[0,0],[53H,0],[0,0],[53H,0],[-1,0],[54H,0]
JETYX2 .LONG 0,[100+60,700-30],[35+60,1250-30],[150+60,1850-30],[100+60,2500-30]
JETPC2 .LONG 0,JTSHD1,JTSHD1,JTSHD2,JTSHD2,JTSHD3,JTSHD3
JETFLG2 .WORD 0,DMAWNZ|M_NOCOLL|M_FLIPH,DMAWNZ|M_NOCOLL|M_FLIPH|M_FLIPV
.WORD DMAWNZ|M_NOCOLL|M_FLIPH,DMAWNZ|M_NOCOLL|M_FLIPH|M_FLIPV
.WORD DMAWNZ|M_NOCOLL|M_FLIPH,DMAWNZ|M_NOCOLL|M_FLIPH|M_FLIPV
JETFLG4 .WORD 0,DMAWNZ|M_NOCOLL,DMAWNZ|M_NOCOLL|M_FLIPV
.WORD DMAWNZ|M_NOCOLL,DMAWNZ|M_NOCOLL|M_FLIPV
.WORD DMAWNZ|M_NOCOLL,DMAWNZ|M_NOCOLL|M_FLIPV
ICON_STOP
SLEEP 12*60
MOVK 1,A0
MOVE A0,@ICONS_DN
DIE
ROAD SLEEPK 1
;TURN ON BTR60S ON THE ROAD
MOVE @WORLDTLX,A0,L
CMPI [0400,0],A0
JRC ROAD
CLR A0
MOVE A0,@JET_KILLS,L ;TRUCK KILLS
MOVE A0,@GET_AWAY ;TRUCKS GOT AWAY
MOVI SCUDP,A8 ;PAL NAME
MOVI PALTMP0,A9 ;RAM AREA
MOVI [50,54],A10 ;BEGIN/END COLOR #
MOVK 8,A11 ;RATE IN TICKS
CREATE CYCPID,COLCYC ;COLOR CYCLER ON
CLR A0
MOVE A0,@BOTFLG
MOVE A0,@TOPFLG
MOVE A0,@NO_BONUS
MOVI 50,A10 ;MAX TRUCKS PER LANE
MOVK 7,A9
CREATE0 TOPLANE
SLEEP 5*60
MOVK 8,A9
CREATE0 BOTLANE
DIE
ROAD2
;TURN ON BTR60S ON THE 2nd ROAD
CREATE0 LIMO2
SLEEP 0AAH
CLR A0
MOVE A0,@JET_KILLS,L ;TRUCK KILLS
MOVE A0,@GET_AWAY ;GOT AWAY
MOVI SCUDP,A8 ;PAL NAME
MOVI PALTMP0,A9 ;RAM AREA
MOVI [50,54],A10 ;BEGIN/END COLOR #
MOVK 8,A11 ;RATE IN TICKS
CREATE CYCPID,COLCYC ;COLOR CYCLER ON
CALLA JEEPCYC ;CYCLE JEEP TIRES
CLR A0
MOVE A0,@BOTFLG
MOVE A0,@TOPFLG
MOVE A0,@NO_BONUS
MOVI 50,A10 ;MAX TRUCKS PER LANE
MOVK 6,A9
CREATE0 BOTLANE
SLEEP 5*60
MOVK 5,A9
CREATE0 TOPLANE
DIE
BOTLANE
;START THEM COMING!
;5=FROM LEFT TOP LANE
;6=FROM LEFT BOTM LANE
;7=FROM RIGHT TOP LANE
;8=FROM RIGHT BOTM LANE
SLEEP 1*60
MOVE @BOTFLG,A0
JRNZ BOTLANE
MOVE @HALT,A0
JRNZ BOTLANE
MOVE @WAVE,A0
CMPI 40,A0
JRZ RDIE
; MOVK 8,A9
CREATE0 ABTR
MOVK 1,A0
MOVE A0,@BOTFLG
DSJ A10,BOTLANE
RDIE DIE
TOPLANE
;START THEM COMING!
;5=FROM LEFT TOP LANE
;6=FROM LEFT BOTM LANE
;7=FROM RIGHT TOP LANE
;8=FROM RIGHT BOTM LANE
SLEEP 1*60
MOVE @TOPFLG,A0
JRNZ TOPLANE
MOVE @HALT,A0
JRNZ TOPLANE
MOVE @WAVE,A0
CMPI 40,A0
JRZ RDIE
; MOVK 7,A9
CREATE0 ABTR
MOVK 1,A0
MOVE A0,@TOPFLG
DSJ A10,TOPLANE
DIE
ABTR MOVE A9,A0
SUBK 7,A0
JRNC FRMR
;POSSIBLY DO JEEP
MOVI 340,A0 ;150
CALLA RANDPER
JRNC FRMR
;JEEP WILL COME OUT
JRUC JEEP_ROAD
FRMR MOVE A9,*A13(MYTYP)
MOVI 190,A0 ;150
CALLA RANDPER
CLR A0
JRNC SITIN
MOVK 1,A0
JRUC SITIN
BTR60A
;MTYP=2
SLEEP 120
MOVI LORDPID,A0
CLR A1
NOT A1
CALLA KILALL
MOVK 4,A0
MOVE A0,*A13(MYTYP)
CREATE0 ICON_STOP
CLR A0
JRUC SITIN
DOBTR60 SLEEPK 1
;WAIT FOR PROPER YLINE TO APPEAR, THEN TURN ON AND START
;A TIMER FOR WHEN IT WILL MOVE
;OR SEND IT FLYING ACROSS SCREEN AT RANDOM!
MOVE @WORLDTLY,A0,L
CMPI 11A00000H,A0
JRNC DOBTR60
CALLA RANDOM
ANDI 03H,A0
MOVE A0,*A13(MYTYP)
MOVE A0,A1
CLR A0
CMPI 2,A1
JRC SITIN
WTP SLEEPK 1
;WAIT A MOMENT LONGER
MOVE @WORLDTLY,A0,L
CMPI 0113F0000H,A0
JRNC WTP
CLR A0
SITIN
MOVE A0,*A13(SCUD)
MOVE *A13(MYTYP),A9
;TURN ON BTR60
SLL 5,A9
MOVI WX,A0
ADD A9,A0
MOVE *A0,A1,L
MOVE @WORLDTLX,A0,L
ADD A1,A0 ;X IS SET
MOVE @WORLDTLY,A1,L
MOVI WY,A2
ADD A9,A2
MOVE *A2,A2,L
ADD A2,A1 ;Y IS SET
MOVI WF,A4
ADD A9,A4
MOVE *A4,A4,L ;FLAGS IS SET
MOVI 09EH,A3
MOVI CLSENMY|TYPT72|SUBTK,A5
MOVI BTR60,A2
MOVE *A13(SCUD),A6
JRZ SITF
MOVI SCUD1,A2
SITF CLR A6
CLR A7
CALLA BEGINOBJ2
MOVE *A13(SCUD),A11
JRZ SITF1
MOVE A13,A10
CLR A0
MOVE A0,*A13(KPTSO),L
MOVK 5,A9
;CREATE 6 WHEELS WITH INDEX PNTR
ADB1 CREATE FUTUREPID,WHEEL
DSJS A9,ADB1
;TURN ON SCUD PC PLUS MISSILE
MOVE A13,A10
MOVE *A13(MYTYP),A0
CMPI 7,A0
JRNC FROMR
;SCUD FROM LEFT
CREATE T72PID,SCUDPC2
CREATE T72PID,SCUDMI2
JRUC SITF2
FROMR
CREATE T72PID,SCUDPC
CREATE T72PID,SCUDMI
JRUC SITF2
SCUDMI2
MOVI MISSLE,A2
MOVI [4,0],A11
MOVI 0A1H,A9
MOVI DMAWNZ|M_NOCOLL|M_FLIPH,A5
JRUC SCPC
SCUDPC2
MOVI SCUD2,A2
CLR A11
MOVI 0A0H,A9
MOVI DMAWNZ|M_NOCOLL|M_FLIPH,A5
JRUC SCPC
SCUDMI
MOVI MISSLE,A2
MOVI [4,0],A11
MOVI 0A1H,A9
MOVI DMAWNZ|M_NOCOLL,A5
JRUC SCPC
SCUDPC
MOVI SCUD2,A2
CLR A11
MOVI 0A0H,A9
MOVI DMAWNZ|M_NOCOLL,A5
SCPC MOVE A10,*A13(PDATA),L ;BTR60 PROC
MOVE A2,A10
CALLA GETANIXY
CLR A6
CLR A7
MOVE A2,A1
MOVE A3,A0
MOVE A9,A3
MOVE A5,A4
; MOVI DMAWNZ|M_NOCOLL,A4
MOVI CLSDEAD,A5
MOVE A10,A2
MOVE A8,A9 ;KEEP TRUCK IN A9
CALLA BEGINOBJ2
AGN SLEEPK 1
MOVE *A13(PDATA),A0,L
MOVE *A0(IDEAD),A0
JRNZ WLOUT
MOVE A8,A0
MOVE A9,A8
CALLA GETANIXY
;A2=Y,A3=X
ADD A11,A2
MOVE *A0(OFLAGS),A4,W
CALLA GANISAG ;ADJUSTS
MOVE A0,A8
JRUC AGN
SITF1 MOVE A13,A10
MOVK 1,A9 ;GUN ON TOP OF BTR60
;CREATE TURRET
; CREATE T72PID,TTORSO
CREATE FUTUREPID,TTORSO
MOVE A0,*A13(KPTSO),L
MOVK 6,A9
;CREATE 6 WHEELS WITH INDEX PNTR
DB1 CREATE FUTUREPID,WHEEL
DSJS A9,DB1
SITF2 MOVE A9,*A13(HITS)
MOVE A9,*A13(MYPLYR) ;FOR WHEN THIS BTR60 HITS GRUNTS
MOVE A9,*A13(IDEAD) ;WILL TELL WHEELS TO DIE OFF IF NOT 0
MOVI 012CH,B0
MOVI 03FCH,B1
CALLA RANGRAND
MOVE A0,A9
DBT SLEEPK 1
CALLR VULN
MOVE *A13(MYTYP),A0
SLL 5,A0
ADDI JTBL,A0
MOVE *A0,A0,L
JUMP A0
JTBL .LONG BT0,BT0,FLFT,FRGT,FLFT_LCK,BT5,BT5,BT7,BT7
;5=FROM LEFT TOP LANE
;6=FROM LEFT BOTM LANE SITTING HERE, MAYBE TAKE OFF!
;7=FROM RIGHT TOP LANE MAYBE DECIDE TO TAKE OFF!
;8=FROM RIGHT BOTM LANE
BT5
MOVI 08000H,B0
MOVI 021000H,B1
JRUC BT7A
BT7
MOVI -021000H,B0
MOVI -08000H,B1
BT7A CALLA RANGRAND
MOVE A0,*A8(OXVEL),L
MOVI 5*60,A9
JRUC SPDRD
BT0
DEC A9
JRNZ DBT
;START MOVING!
FLFT
;FROM LEFT OF SCRN
;SEND FLYING
MOVI 07000H,B0 ;7F
MOVI 013000H,B1 ;16
CALLA RANGRAND
MOVE A0,*A8(OXVEL),L
MOVI 200,A9
SPDRD SLEEPK 1
CALLR VULN
MOVE A9,A9
JRZ SPDF
DEC A9
JRUC SPDRD
SPDF CALLA SCRTST
JRZ SPDRD
SLEEPK 20
MOVE *A8(OXVEL),A0,L
CMPI 0FFFB8000H,A0 ;MEANS TRUCK IS SPEEDING OFF SCRN
JRZ INHR
CMPI -0FFFB8000H,A0 ;MEANS TRUCK IS SPEEDING OFF SCRN
JRZ INHR
MOVE @WAVE,A0
JRZ INHR
CMPI 10,A0
JRZ INHR
MOVK 1,A0 ;THIS ONE GOT AWAY!
MOVE A0,@NO_BONUS
MOVI HORNSND,A0
CALLA ONESND
MOVE @GET_AWAY,A0 ;GOT AWAY TOTAL
ADDK 1,A0
MOVE A0,@GET_AWAY
INHR
;KILL WHEELS, TURRET, BTR60
;5=FROM LEFT TOP LANE
;6=FROM LEFT BOTM LANE
;7=FROM RIGHT TOP LANE
;8=FROM RIGHT BOTM LANE
CLR A1
MOVE *A13(MYTYP),A0
CMPI 6,A0
JRZ IN1
CMPI 5,A0
JRZ INCG
SUBK 7,A0
JRNZ IN1
INCG MOVE A1,@TOPFLG
JRUC IN2
IN1
MOVE A1,@BOTFLG
IN2 MOVK 1,A0
;KILL WHEELS
MOVE A0,*A13(IDEAD) ;WILL TELL WHEELS TO DIE OFF
SLEEPK 5
MOVE *A13(KPTSO),A0,L
JRZ TAG0
;TURRET STILL ALIVE!
CALLA KILL
MOVE *A13(KPTSOBJ),A0,L
CALLA DELOBJ
TAG0 jauc DELOBJDIE ;BTR60 IMAGE OR SCUD TRUCK
FLFT_LCK
;FROM LEFT FOR LOCKDOWN
MOVI 015000H,A0
MOVE A0,*A8(OXVEL),L
MOVI 0F2H,A9
XSPDRD SLEEPK 1
CALLR VULN
MOVE A9,A9
JRZ XSPDF
MOVE *A8(OXVEL),A0,L
SUBI 120H,A0
MOVE A0,*A8(OXVEL),L
DEC A9
JRNZ XSPDRD
MOVE A9,*A8(OXVEL),L
JRUC XSPDRD
XSPDF CALLA SCRTST
JRZ XSPDRD
JRUC INHR
FRGT
;FROM RIGHT OF SCRN
;SEND FLYING
MOVI -013000H,B0
MOVI -06FFFH,B1
CALLA RANGRAND
MOVE A0,*A8(OXVEL),L
; MOVI 13*60,A9
MOVI 5*60,A9
JRUC SPDRD
;4=IS FOR LOCKDOWN
;5=FROM LEFT TOP LANE
;6=FROM LEFT BOTM LANE
;7=FROM RIGHT TOP LANE
;8=FROM RIGHT BOTM LANE
WX .LONG [07CH,0],[07CH,0],[-65,0],[470,0],[-65,0]
.LONG [-85,0],[-85,0],[485,0],[485,0]
WY .LONG [0FF72H,0],[0FF72H,0],[0FFD0H,0],[0FFD0H,0],[024H,0]
.LONG [06H,0],[06BH,0],[06H,0],[06BH,0]
WF .LONG DMAWNZ|M_FLIPH|M_PIXSCAN,DMAWNZ|M_FLIPH|M_PIXSCAN
.LONG DMAWNZ|M_FLIPH|M_PIXSCAN,DMAWNZ|M_PIXSCAN,DMAWNZ|M_FLIPH|M_PIXSCAN
.LONG DMAWNZ|M_FLIPH|M_PIXSCAN,DMAWNZ|M_FLIPH|M_PIXSCAN
.LONG DMAWNZ|M_PIXSCAN,DMAWNZ|M_PIXSCAN
WHEEL
;A8=BTR60 PNTR
;A9=INDEX TO WHEEL # 1-6
;A10=BTR60 PROC PNTR
;TURN ON TORSO WITH SAME X/Y AS CURRENT A8
;A11=0 OR 1
MOVE A11,*A13(SCUD)
CLR A0
MOVE A0,*A13(MODY),L ;WHEEL BOUNCE UP AND DOWN AMOUNT
CALLA RANDOM
ANDI 07,A0
MOVE A0,*A13(BNCING)
MOVK 1,A0
MOVE A0,*A13(ANICNT) ;WHEEL ANI CNT
DEC A9
SLL 5,A9
MOVE A10,*A13(KPBTRP),L ;BTR60 PROC
MOVE A8,*A13(KPBTRO),L ;BTR60 OBJECT PNTR
CALLA GETANIXY
CLR A6
CLR A7
MOVE A2,A1
MOVE A3,A0
MOVI 09EH,A3 ;133
; MOVI DMAWNZ|M_NOCOLL,A4
MOVI DMAWNZ,A4
; MOVI CLSENMY|TYPT72|SUBTK,A5
MOVI CLSDEAD,A5
MOVI BTIRE1,A2
CALLA BEGINOBJ2
MOVE *A8(OPAL),A0,L
ANDI 0FFFFH,A0
MOVE A0,*A8(OPAL),L
WLTOP SLEEPK 2 ;1
MOVE *A13(KPBTRP),A0,L
MOVE *A0(IDEAD),A0
JRNZ WLOUT
;ALIGN WHEEL BASED ON INDEX # (A9)
MOVE A8,A0
MOVE *A13(KPBTRO),A8,L
CALLA GETANIXY
MOVE *A8(OFLAGS),A4,W
MOVE *A13(SCUD),A7
JRZ REGBT
;A SCUD
MOVI ZXOF,A7
MOVI ZYOF,A6
;A2=Y,A3=X
BTST B_FLIPH,A4
JRZ WB19
MOVI ZXOF2,A7
WB19
JRUC WB1
REGBT
MOVI XOF,A7
MOVI YOF,A6
;A2=Y,A3=X
BTST B_FLIPH,A4
JRZ WB1
MOVI XOF2,A7
WB1 ADD A9,A6
MOVE *A6,A6,L
ADD A6,A2
MOVE *A13(MODY),A6,L
ADD A6,A2
ADD A9,A7
MOVE *A7,A6,L
ADD A6,A3
MOVE *A0(OFLAGS),A4,W
CALLA GANISAG ;ADJUSTS THIS WHEEL
MOVE A0,A8
;SHOULD I ANIMATE THIS WHEEL
MOVE *A13(KPBTRO),A0,L ;IS BTR60 MOVING?
MOVE *A0(OXVEL),A0,L
JRZ WLTOP
MOVE @HALT,A0
JRNZ WLTOP
MOVE *A13(ANICNT),A0
DEC A0
MOVE A0,*A13(ANICNT)
JRNZ WLTOP
;CHANGE WHEEL IMAGE TO OTHER VIEW
MOVK 2,A0 ;4
MOVE A0,*A13(ANICNT)
MOVE *A8(OFLAGS),A4
MOVI BTIRE2,A1
MOVE *A8(OIMG),A0,L
CMPI BTIRE1,A0
JRZ WL2
MOVI BTIRE1,A1
WL2 CALLA ANI
MOVE *A13(BNCING),A0
ANDI 03H,A0
DEC A0
MOVE A0,*A13(BNCING)
JRNZ WLTOP
MOVE *A13(MODY),A0,L
XORI 10000H,A0
MOVE A0,*A13(MODY),L
MOVK 2,A0
CALLA RNDRNG0
; CALLA RANDOM
; ANDI 03H,A0
MOVE A0,*A13(BNCING)
JRUC WLTOP
WLOUT
SLEEP 60
jauc DELOBJDIE
YOF .LONG [078H,0],[078H,0],[078H,0]
.LONG [036H,0],[036H,0],[036H,0]
XOF .LONG [-10,0],[1EH,0],[46H,0]
.LONG [-10,0],[1EH,0],[46H,0]
XOF2 .LONG [7-80,0],[7-40,0],[7,0]
.LONG [7-80,0],[7-40,0],[7,0]
ZYOF .LONG [078H,0],[078H,0],[078H,0],[078H,0]
.LONG [033H,0],[036H,0],[036H,0],[036H,0]
ZXOF .LONG [0FFEDH,0],[1EH,0],[46H,0],[6FH,0]
.LONG [0FFEDH,0],[1EH,0],[46H,0],[76H,0]
ZXOF2 .LONG [014H,0],[0FFDEH,0],[0FFB7H,0],[0FF90H,0]
.LONG [014H,0]
;
HIT_TNK2
;TIME BOMB HITS TANK BASE
PUSH A0
MOVI 90H,A0 ;90
CALLA RANDPER
JRC HIT_TNK0
PULL A0
RETS
HIT_TNK0
PULL A0
HIT_TNK
;BULLET HITS BASE
;A8=TANK BASE
MMTM SP,A1,A2,A7,A9,A10
MOVE *A8(OIMG),A1,L
CMPI BTRECK,A1
JRZ HO ;ALREADY DEAD!
MOVE *A0(OPLINK),A10,L ;FOR MYPLYR INFO FOR SCORING
CMPI BTR60,A1
JRZ ABT ;HITT
CMPI SCUD1,A1
JRZ ABT0 ;HITT
CMPI JEEP4,A1
JRZ JTT
CMPI JEEP2,A1
JRZ JTT
CMPI JEEP,A1
JRNZ HITT
JTT
;A JEEP
MOVK JEEPHITS,A2
JRUC ABT2
ABT0
MOVE *A8(OXVEL),A0,L
CMPI 0FFFB8000H,A0 ;MEANS TRUCK IS SPEEDING OFF SCRN
JRZ HO
CMPI -0FFFB8000H,A0 ;MEANS TRUCK IS SPEEDING OFF SCRN
JRZ HO
MOVK BTHITS3,A2 ;SCUD TRUCK
MOVE *A8(OPLINK),A1,L
JRUC ABT2
ABT
;A BTR60
MOVK BTHITS,A2 ;BTR60 HITS
MOVE *A8(OPLINK),A1,L
MOVE *A1(MYTYP),A1
SUBK 5,A1 ;7
;CMPI 7,A1
JRC ABT2
MOVK BTHITS2,A2 ;BTR60 HITS FOR ROAD
ABT2
MOVE *A0(OID),A1
CMPI CLSPLYR|TYPPLBL|SUBLZR,A1
JRNZ HT201
MOVE @PCNT,A0
ANDI 07H,A0
JRZ HT201A
CMPI 1,A0
JRNZ HO
;FLASH ON POWER UP WEAPON
HT201 MOVE @PCNT,A0
ANDI 01,A0
JRZ HO
HT201A MOVI 03F3F0000H,A9
CREATE0 FLASHME
MOVK 1,A9 ;1
CMPI JEEPHITS,A2
JRZ MAYBEA ;JEEP WILL NOT JERK AROUND ON HITS
CREATE0 XYNEW
JRUC MAYBEA
HITT
; MOVE A0,A10
MOVE *A0(OID),A1
CMPI CLSPLYR|TYPPLBL|SUBLZR,A1
JRNZ HT20
MOVE @PCNT,A0
ANDI 07H,A0
JRNZ HO
;FLASH ON POWER UP WEAPON
HT20 MOVE @PCNT,A0
ANDI 01,A0
JRNZ HO
MOVE *A8(OPLINK),A0,L
PUSH A8
MOVE *A0(BRL),A8,L
MOVI 03F3F0000H,A9
CREATE0 FLASHME
PULL A8
MOVI 03F3F0000H,A9
CREATE0 FLASHME
MOVK 2,A9 ;1
PUSH A10 ;KEEP FOR LATER CK OF MYPLYR
MOVE *A8(OPLINK),A10,L
CREATE0 SHAKEME
PULL A10
MOVI T72HITS,A2 ;TANK HITS BEFORE DEATH
MAYBEA
;I HAVE FLASHED, ADD 1 POINT!
PUSH A2
MOVE *A10(MYPLYR),A0
MOVI P1DATA,A2
CMPI 1,A0
JREQ J5X
CMPI 2,A0
JRNZ HOX
MOVI P2DATA,A2
;A2=P1DATA OR P2DATA
J5X MOVI HITPT,A1 ;AMOUNT OF SCORE
CALLA SCRADD2
HOX PULL A2
;DO NOT ADD UP HITS IF TURRET GUNNER IS STILL ALIVE!
MOVE *A8(OPLINK),A0,L
MOVE *A0(KPTSO),A1,L
JRNZ HO
MOVE *A0(HITS),A1
INC A1
MOVE A1,*A0(HITS)
CMP A2,A1 ;DIFFICULTY ADJUST
;FOR BTR60 ALSO
JRLT HO
CLR A1
MOVE A1,*A0(HITS)
MOVI JPDIE,A7
CMPI JEEPHITS,A2 ;JEEP DIE
JRNZ TD1
PUSH A0
MOVI 570,A0 ;DON'T KILL JEEP IN WARP ROAD AREA
MOVE @WAVE,A1
CMPI 18,A1
JRZ HOX2
MOVI 200,A0 ;10% OF TIME DON'T KILL JEEP!
CMPI 42,A1
JRZ HOXC
CMPI 23,A1
JRNZ HOX2
HOXC MOVI 110,A0 ;DON'T KILL JEEP IN WARP ROAD AREA
HOX2 CALLA RANDPER
JRNC KILJP
;NO KILL JEEP
PULL A0
JRUC HO
KILJP
MMTM SP,A0,A7,A9
MOVK 1,A9
CREATE FUTUREPID,BONE
MMFM SP,A0,A7,A9
PULL A0
CALLA GETA9
MOVI JEEPPT,A1
CALLR SCORE_PTS
CALLA GETA10
CLR A1
CALLA XFERPROC
JRUC HO
TD1
CMPI BTHITS,A2
JRZ TD11
CMPI BTHITS2,A2
JRZ TD11
CMPI BTHITS3,A2
JRNZ TD0
TD11
MMTM SP,A0,A9
MOVI 120,A9
CMPI BTHITS,A2
JRZ TD12
MOVK 10,A9 ;FOR ROAD DUDE
TD12 CREATE FUTUREPID,BONE
MMFM SP,A0,A9
MOVI BTDIE,A7 ;BTR60 DIE
MOVI FUTUREPID,A1
CALLA XFERPROC
JRUC TD00
TD0
MMTM SP,A0,A9
MOVI 230,A9
CREATE FUTUREPID,BONE
MMFM SP,A0,A9
MOVI TDIE,A7 ;T72 DIE
MOVI FUTUREPID,A1
CALLA XFERPROC
TD00 MOVI BTNKPT,A1
CALLR SCORE_PTS
HO
MMFM SP,A1,A2,A7,A9,A10
RETS
KEYSND2B .WORD >FBEE,>18,>80B5,0 ;BIG STUFF SND 2
shout .word >f1a0,60,>80fe,0 ;Rackup victory shout
; .DEF LOG
;LOG CREATE0 DO_WINNER
; SLEEP 200
; JRUC LOG
DO_WINNER
;IF 2 PLAYER GAME, EVALUATE WHO SCORED MORE IN THIS WAVE
;PRINT A MESSAGE IN MID SCRN
;SCROLL TOWARD SCOREBOARD
; MOVE @STATUS,A0
; CMPI 3,A0
; JANZ SUCIDE
MOVI shout,a0
CALLA ONESND
;P1 WINNER
MOVI [58H,0],A11
MOVI P1DATA,A2
MOVI P1DATA+WAVEPTS,A0
MOVI P2DATA+WAVEPTS,A1
MOVE *A0,A0
MOVE *A1,A1
CLR A10
ZEXT A0
ZEXT A1
CMP A0,A1
JRLT RTE
;P2 WINNER
MOVI [170H,0],A11
MOVI P2DATA,A2
MOVK 1,A10
RTE:
MOVI >2500,A1 ;WAVE WINNER
CALLA SCRADD2
CREATE FUTUREPID,ZOOM_BONUS
MOVE A11,A0
MOVI [80,0],A1
MOVI 460,A3 ;700
MOVI DMAWNZ|M_NOCOLL,A4
MOVI CLSDEAD,A5
MOVI WINNER,A2
CLR A6
CLR A7
CALLA BEGINOBJ
CALLA CYCLEON
CLR A0
MOVE A0,@P1DATA+WAVEPTS
MOVE A0,@P2DATA+WAVEPTS
SLEEP 60
MOVI 0FFFE8000H,A0
MOVE A0,*A8(OYVEL),L
SLEEPK 30
JAUC DELOBJDIE
ZOOM_BONUS
;ZOOM BONUS WORD FROM WINNER TO HIS SCOREBOARD
;A10=0 OR 1
MOVI WVBON,A0
CALLA ONESND
MOVE @WAVE,A0
CMPI 17,A0
JRLT NOLOSR
CMPI 20,A0
JRZ NOLOSR
CMPI 21,A0
JRZ NOLOSR
CMPI 22,A0
JRZ NOLOSR
CMPI 42,A0
JRZ NOLOSR
;SHOW LOSER FROM ROAD ON!
SLEEP 30
CREATE FUTUREPID,ZMLS
NOLOSR
MOVK 20H,A9
ZM1 CREATE FUTUREPID,ZOOMIT
SLEEPK 3
; MOVI SCASH,A0 ;GET CASH PICKUP SND
; CALLA ONESND
DSJ A9,ZM1
DIE
WVBON .WORD >FBEE,>18,>808F,0 ;WAVE BONUS
ZMLS
MOVK 10H,A9
ZML1 CREATE FUTUREPID,ZOOMLOSER
SLEEPK 6
DSJS A9,ZML1
DIE
ZOOMLOSER
MOVE A10,A2
XORI 1,A2
SLL 5,A2
ADDI PLYROBJS,A2,L
MOVE *A2,A2,L
MOVE *A2(OXVAL),A0,L
ADDI [10,0],A0
MOVE *A2(OYVAL),A1,L
ADDI [11H,0],A1
MOVI LOSER,A2 ;LOSER,A2 ;WVBONUS,A2
MOVI 450,A3 ;700
MOVI DMAWNZ|M_NOCOLL,A4
MOVI CLSDEAD,A5
CLR A6
CLR A7
CALLA BEGINOBJ2
;
MOVI -010000H,a0
MOVI 010000H,a1
CALLA RNDRNG
MOVE A0,*A8(OXVEL),L
MOVI -010000H,a0
MOVI 010000H,a1
CALLA RNDRNG
MOVE A0,*A8(OYVEL),L
SLEEP 40
JAUC DELOBJDIE
ZOOMIT
MOVE A10,A2
SLL 5,A2
ADDI PLYROBJS,A2,L
MOVE *A2,A2,L
MOVE *A2(OXVAL),A0,L
ADDI [10,0],A0
MOVE *A2(OYVAL),A1,L
ADDI [11H,0],A1
MOVI WVBONUS,A2 ;WVBONUS,A2
MOVI 450,A3 ;700
MOVI DMAWNZ|M_NOCOLL,A4
MOVI CLSDEAD,A5
CLR A6
CLR A7
CALLA BEGINOBJ2
CLR A11
JAUC INHERE
BONE
;TURN ON BONUS WORD
;TURN ON CYCLE
;FLOAT TOWARD CORRECT SCOREBOARD
;A8=BTR60/T72 IMG PNTR
;AWESOME SPEECH CALL
;A10=BULLET WHO KILLED ME
MOVE *A10(MYPLYR),A10
CMPI 1,A10
JRZ DOS1
MOVE @JET_KILLS+16,A0
ADDK 1,A0
MOVE A0,@JET_KILLS+16
JRUC DOS2
DOS1
MOVE @JET_KILLS,A0
ADDK 1,A0
MOVE A0,@JET_KILLS
DOS2 MOVE A9,A0
CALLA PRCSLP
MOVI KEYSND2,A0
MOVE @HCOUNT,A1
BTST 0,A1
JRZ BONE2
MOVI KEYSND2B,A0
BONE2 CALLA ONESND
DEC A10
;A10=PNUM 0 OR 1
CALLA GETCPNT
SUBI [16,0],A1
CMPI 190,A9 ;DISH BLOW
JRNZ NOADJ1
ADDI [24,8],A1
JRUC NOADJ
NOADJ1 CMPI 230,A9
JRNZ NOADJ
ADDI [0,7],A1
NOADJ MOVX A1,A0
SLL 16,A0
MOVI 460,A3 ;700
MOVI DMAWNZ|M_NOCOLL,A4
MOVI CLSDEAD,A5
MOVI BIGBONE,A2
CLR A6
CLR A7
CALLA BEGINOBJ2
CALLA CYCLEON
SLEEP 90
CLR A11
JAUC INHERE
SCORE_PTS
;A1=PTS TO SCORE
;A10=KILLER IMG WITH MYPLYR STORED IN PDATA
MMTM SP,A0,A1,A2
MOVE *A10(MYPLYR),A0
MOVI P1DATA,A2
DEC A0
JREQ J5
CMPI 1,A0
JRNZ HOCK
MOVI P2DATA,A2
;A2=P1DATA OR P2DATA
J5
MOVE *A2(TBIGSTF),A0
INC A0
MOVE A0,*A2(TBIGSTF) ;TOTAL BIG STUFF DESTROYED
CALLA SCRADD2
HOCK
MMFM SP,A0,A1,A2
RETS
SPAWN_T72
;TURN ON TANK
CREATE T72PID,T72ON
RETS
T72ON SLEEPK 1
MOVE @HULK_DN,A0
JRZ T72ON
CLR A6
CLR A7
MOVI [0DFH,0],A0
MOVI [0FF85H+00,0],A1
MOVI 159,A3 ;SAME AS BULLETS
MOVI DMAWNZ|M_NOCOLL,A4
MOVI CLSENMY|TYPT72,A5
MOVI T72TNK,A2
CALLA BEGINOBJ
;TANK APPEARS
;TANKON:
;A8=SHELL OF TANK
MOVE A8,*A13(TMPPTR),L ;@MUTPTR,L ;*A13(MUTPTR),L
;TURN ON ALL PIECES
MOVK 8,A9
TP MOVE A9,A0
SLL 5,A0
ADDI ONLIST,A0
MOVE *A0,A14,L
CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE
CALLA STFOBJ ;STUFF OBJECT DATA
MOVE A13,*A0(OPLINK),L
CALLA INSOBJ ;INSERT OBJECT INTO LIST
MOVE A0,A8
MOVE *A13(TMPPTR),A0,L ;@MUTPTR,A0,L ;*A13(MUTPTR),A0,L
MOVE *A0(OYPOS),A10
MOVE *A0(OXPOS),A11
MOVE A10,*A8(OYPOS),W
MOVE A11,*A8(OXPOS),W
MOVE *A8(OPAL),A0,L
ANDI 0FFFFH,A0
MOVE A0,*A8(OPAL),L
MOVE A9,A0
DEC A0
SLL 5,A0
ADD A13,A0
ADDI TNKL,A0
MOVE A8,*A0,L
DEC A9
JRNZ TP
MOVE A9,*A13(HITS)
MOVE A9,*A13(MYPLYR) ;FOR WHEN T72 KILLS GRUNTS!
;OBJECTS ALL ON
MOVE *A13(TMPPTR),A0,L ;@MUTPTR,A0,L ;*A13(MUTPTR),A0,L
CALLA DELOBJ ;KILL OLD SHELL
MOVE *A13(TNKL),A8,L
MOVE A8,@T72PNTR,L ;T72 FLAG FOR CRUISE MISSILES
MOVE A13,A10
CLR A9 ;ARAB DUDE ON TANK
CREATE T72PID,HELP_ARW
CREATE T72PID,TTORSO
MOVE A0,*A13(KPTSO),L
MOVE A8,A9
MOVE *A13(BRL),A8,L
CREATE T72PID,GUNBARL
MOVE A0,*A13(KPGUN),L
MOVE A9,A8
SLEEPK 3
MOVI 60,A0 ;60
MOVE A0,*A13(MAXYMV)
MOVI 08000H,A0 ;8000
MOVE A0,*A13(YVL),L
TOID_TOP
MOVE @HALT,A0
JRZ TT2
CALLR LINE_UP ;ADJUST ALL PARTS TO MATCH TANK LEFT
SLEEPK 1
JRUC TOID_TOP
TT2
CALLR VULN
CALLR LINE_UP ;ADJUST ALL PARTS TO MATCH TANK LEFT
CALLR MV_TNK
MOVE A8,*A13(TNKL),L
SLEEPK 1
JRUC TOID_TOP
VULN
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|TYPT72,A0
JRZ TMV2
MOVK 3,A3
MOVI CLSENMY|TYPT72,A1
TMV2 MOVE A1,*A8(OID)
TMV3
MOVE A3,*A13(CNTR)
MOVE *A8(OID),A0
ORI 1,A0 ;NO COLLIDE WITH BULLETS
MOVE A0,*A8(OID)
MOVI 270,A0
CALLA RANDPER
JRNC TT2A
MOVE *A8(OID),A0 ;TANK CAN ABSORB HITS
ANDI 0FFC0H,A0
MOVE A0,*A8(OID)
TT2A RETS
HELP_ARW
CLR A6
CLR A7
CLR A0
CLR A1
MOVI 163,A3 ;133
MOVI DMAWNZ|M_NOCOLL,A4
MOVI CLSNEUT,A5
MOVI NEARTNK,A2
CALLA BEGINOBJ2
CREATE T72PID,BLNK
MOVI 10*60,A9
SIT SLEEPK 1
MOVE A8,A0
MOVE @T72PNTR,A8,L
CALLA GETANIXY
;A2=Y,A3=X
ADDI [4AH,0],A2
ADDI [2FH,0],A3
MOVE *A0(OFLAGS),A4,W
CALLA GANISAG ;ADJUSTS TORSO
MOVE A0,A8
DSJ A9,SIT
JAUC DELOBJDIE
BLNK MOVK 12,A10
BK MOVE A8,A0
CALLA OBJON
SLEEPK 30
MOVE A8,A0
CALLA OBJOFF
SLEEPK 10
DSJ A10,BK
DIE
BTDIE
;ABSORBED ENOUGH HITS
;FLAME THIS BTR60
;IF STOPPED, FLAMES ON TOP
;IF MOVING, MOVE EVERYTHING
;DIE OFF
MOVE *A8(OID),A0
ORI 1,A0 ;NO COLLIDE WITH BULLETS
MOVE A0,*A8(OID)
CLR A0
MOVE *A13(MYTYP),A1
CMPI 4,A1 ;IF IN LOCK DOWN, STOP DEAD BTR60
JRZ NOZ
MOVE *A8(OXVEL),A0,L
JRZ NOZ
JRN Z10
MOVE *A13(MYTYP),A1
CMPI 5,A1
JRNC REGBD
JRUC Z1
Z10 MOVE *A13(MYTYP),A1
;7=FROM RIGHT TOP LANE
;8=FROM RIGHT BOTM LANE
CMPI 7,A1
JRC REGB
;ON ROAD
MOVI 0FFFB8000H,A0
MOVE A0,*A8(OXVEL),L
MOVK 2H,A10
JRUC NOZ2
REGBD
;FROM LEFT SIDE!
MOVI -0FFFB8000H,A0
MOVE A0,*A8(OXVEL),L
MOVK 2H,A10
JRUC NOZ2
REGB NEG A0
SLL 1,A0 ;SLOW IT DOWN UPON DEATH
NEG A0
JRUC NOZ
Z1 SLL 1,A0
NOZ
MOVE A0,*A8(OXVEL),L
;SHAKE SCRN
MOVK 19H,A10
NOZ2 CALLA SHAKER ;SHAKE SCRN
;SEND EXPLOSIONS OUT FROM BTR60
MOVK 6,A10 ;35
CREATE FUTUREPID,DOE ;CREATE0
CREATE FUTUREPID,MORE3 ;CREATE0
;START FLAMES ON BTR60
MOVE *A13(MYTYP),A10
;7=FROM RIGHT TOP LANE
;8=FROM RIGHT BOTM LANE
CMPI 5,A10
JRNC NOSLP
SLEEP 50 ;60
NOSLP
CREATE FUTUREPID,FLAMES
MOVE *A8(OIMG),A0,L
CMPI SCUD1,A0
JRZ STILL
MOVE *A8(OFLAGS),A4
MOVI BTRECK,A1
CALLA ANI
;SEND OUT FLAMING GRUNTS?
CMPI 5,A10
JRNC COUPLE
MOVK 12,A10
CREATE FUTUREPID,DO_FLMRS
;STILL ALLOW BULLET COLLISIONS
STILL MOVE *A8(OID),A0 ;TANK CAN ABSORB HITS
ANDI 0FFC0H,A0
MOVE A0,*A8(OID)
CREATE FUTUREPID,FIRESNDS
MOVI 40,A9 ;DO NO SCRTST FOR 30 TICKS FOR FLAMES!
JRUC SPDRD
COUPLE MOVK 1,A9
CREATE FUTUREPID,DO_F1
JRUC STILL
DO_FLMRS
MOVE A10,A0
CALLA RNDRNG0
ADDK 1,A0
MOVE A0,A9
DO_F1 MOVE @HALT,A0
JRZ DO_F1A
SLEEPK 1
JRUC DO_F1
DO_F1A
CREATE BOSSPID,MORTAR_GRNT
MOVI fpain1,a0
BTST 0,A9
JRZ DO_F2
MOVI fpain2,a0
DO_F2
calla ONESND
MOVK 19,A0
CALLA RNDRNG0
ADDK 3,A0
CALLA PRCSLP
DSJ A9,DO_F1
DIE
fpain1 .word >f965,20,>80f6,0 ;Player in pain
fpain2 .word >f960,20,>80f7,0 ;^
FIRESNDS
MOVK 3,A10
FS1 MOVI FIREDI,A0
CALLA ONESND
SLEEPK 30
DSJ A10,FS1
MOVE @WAVE,A0
CMPI 18,A0
JRZ XFS2
CMPI 17,A0
JRNZ FS2
XFS2 MOVE @HCOUNT,A0
ANDI 07H,A0
SLL 5,A0
ADDI YEAHS,A0
MOVE *A0,A0,L
CALLA ONESND
DIE
YEAHS .LONG YEAHHH,YEAHHH,WOO1,WOO2,TOTCARN
.LONG LOVEIT,WOO2,WOO1
;TOTCARN .WORD >F1F0,100,>80CF,0 ;"TOTAL CARNAGE"
TOTCARN .WORD >F9F0,130,>80CF,0 ;"TOTAL CARNAGE"
WOO1 .WORD >F9F0,>24,>80CB,0 ;WHHOOO
WOO2 .WORD >F9F0,>24,>80CC,0 ;"YEAH"
YEAHHH .WORD >F9F0,>64,>80FE,0 ;RACKUP YEAHHH
LOVEIT .WORD >F9F0,>78,>80CD,0 ;"I LOVE IT"
FS2 MOVI LOVEIT,A0
CALLA ONESND
DIE
TDIE
;ABSORBED ENOUGH HITS
;KILL THIS TANK
;STOP VELOCITY
;TURN OFF ALL COLLISIONS WITH MORE BULLETS, ETC.
;KILL TURRET PROCESS
;SHAKE VIOLENTLY, SEND PLUMES OF EXPLOSIONS OUT OF IT
;SHAKE SCREEN ALSO
;COVER WITH BIG EXPLOSIONS
;KILL ALL PIECES EXCEPT TANK BASE
;REPLACE TANK BASE WITH BLOWN UP VIEW
;DIE OFF
CLR A0
MOVE A0,@T72PNTR,L
MOVE A0,*A8(OYVEL),L
MOVE *A8(OID),A0
ORI 1,A0 ;NO COLLIDE WITH BULLETS
MOVE A0,*A8(OID)
MOVE *A13(KPGUN),A0,L
CALLA KILL
MOVI 29H,A10
CALLA SHAKER ;SHAKE SCRN
MOVI 21,A10 ;35
CREATE FUTUREPID,DOE2
MOVI 60,A9 ;14
CREATE FUTUREPID,MORE2 ;0 9/28
MOVE A13,A10
CREATE0 SHAKEME
SLEEP 200 ;UNTIL SHAKING IS DONE
CREATE FUTUREPID,ONME ;0 9/28
SLEEP 70 ;80
MOVE *A13(BRL),A0,L
CALLA DELOBJ
MOVE *A13(TRDLF),A0,L
CALLA DELOBJ
MOVE *A13(TRDRF),A0,L
CALLA DELOBJ
MOVE *A13(TRDLS),A0,L
CALLA DELOBJ
MOVE *A13(TRDRS),A0,L
CALLA DELOBJ
MOVE *A13(SHADR),A0,L
CALLA DELOBJ
MOVE *A13(SHADF),A0,L
CALLA DELOBJ
MOVE *A13(TNKL),A8,L
MOVE *A8(OFLAGS),A4
MOVI T72TNK2,A1
CALLA ANI
MOVE @WAVE,A0
; CMPI 33,A0
; JRZ CAPTURE
CMPI 10,A0
JRNZ CKST
;DECIDE WHICH PATH PLAYERS WILL TAKE, A OR B!
FAKET
;START SCROLL UP INTO DESERT
CREATE0 CHOOSE
CREATE0 CHOOSE2
SLEEP 90
CREATE0 DO_WINNER
MOVK 7,A9 ;UP TO 2ND LOCKDOWN IN DESERT
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 30 ;140+120
MOVI PATHA,A10 ;INDICATES NEW SCROLL WITH SCRL TABLE
MOVE @WORLDTLY,A9,L
SRL 16,A9
ADDI 220,A9 ;130 ;A9=Y TARGET LINE TO TRIGGER SCROLL
PUSH A8
CLR A8 ;A8=0 MEANS NOT CHECKING FOR X TARGET
CREATE TARGPID,TARGET
MOVI 08000H,A0
MOVE A0,@HZSPD,L
PULL A8
SLEEP 65
MOVK 32,A0
MOVE A0,@ARWOFF ;BLINK ARROW A0 MORE TIMES THEN KILL!
CKST SLEEP 60
CALLA SCRTST
JRZ CKST
jauc DELOBJDIE ;DELETE DEAD T72 TANK SHELL
;CAPTURE
; SLEEP 120
; MOVK 2,A10 ;2ND RACKUP
; CREATE0 WAITTNT
; MOVI 1000H,A0
; MOVE A0,*A13(PROCID),W
; JRUC CKST
CHOOSE2
MOVE @WORLDTLX,A0,L
ADDI [129H-15,0],A0
MOVE @WORLDTLY,A1,L
ADDI [0E6H+5,0],A1
MOVI LOSSWAY,A2 ;IMG
JRUC CH2
CHOOSE
MOVE @WORLDTLX,A0,L
ADDI [0DH,0],A0
MOVE @WORLDTLY,A1,L
ADDI [0E6H,0],A1
MOVI TCWAY,A2 ;IMG
CH2 MOVI 150,A3 ;ZPOS
MOVI DMAWNZ|M_NOCOLL,A4 ;NON-ZERO VALUE
MOVI CLSDEAD,A5 ;ID
CLR A6 ;XVEL
MOVI -0C000H,A7 ;YVEL
CALLA BEGINOBJ2 ;NO WORLD ADDED IN
SLEEP 07CH/2
CLR A0
MOVE A0,*A8(OYVEL),L
MANY SLEEP 60
CALLA SCRTST
JRZ MANY
jauc DELOBJDIE ;KILL THIS WAY MESSAGE
ONME
;TURN ON BIG EXPLOSIONS
MOVK 18,A10 ;35
CREATE FUTUREPID,DOE
MOVE *A8(OXPOS),A9
MOVE *A8(OYPOS),A10
ADDK 18,A9
ADDK 13H,A10
MOVK 01FH,A11 ;3DH
FTP MOVI BEXP,A14
CALLA DO_ALL_STUFF
MOVE A0,A8
MOVI -35,B0
MOVI 35,B1
CALLA RANGRAND
ADD A9,A0
MOVE A0,*A8(OXPOS)
MOVI -15,B0
MOVI 040H,B1 ;3A
CALLA RANGRAND
ADD A10,A0
MOVE A0,*A8(OYPOS)
CREATE FUTUREPID,FRAIT
SLEEPK 3H
DSJ A11,FTP
DIE
DOE
MOVI EXP2HIB,A0
CALLA ONESND
SLEEPK 1
MOVI ALTEXP5,A0
CALLA ONESND
SLEEPK 5
DSJ A10,DOE
DIE
DOE2
; MOVI ALTEXP1,A0
; CALLA ONESND
; SLEEPK 1
; MOVI EXP2HIB,A0
; CALLA ONESND
; SLEEPK 5
MOVI EXP2HIB,A0
CALLA ONESND
SLEEPK 1
MOVI ALTEXP4,A0
CALLA ONESND
SLEEPK 8
DSJ A10,DOE2
DIE
ALTEXP4 .WORD >F575,>8,>80DF,0 ;ALT CHAN EXP - JEEPS
;SNDLST .LONG EXP2HIB,ALTEXP5,EXP1,EXP1L,EXP4,ALTEXP4,EXP5,SALTXP4
BEXP:
.LONG [3AH,0],[85H,0],XPLD1
.WORD 295,DMAWNZ|M_NOCOLL,CLSPLYR|TYPPLBL ;I WILL DELETE MYSELF
.LONG 0,0
MV_TNK MOVE @PCNT,A0
ANDI 03,A0
JRNZ RYT
MOVE *A13(MAXYMV),A5
JRNZ CRT
;MAYBE DECIDE TO DO SOMETHING
MOVI 60,A0
CALLA RANDPER
JRNC RYT
;TRY TO GO DOWN OR UP
MOVE A0,A5
MOVE A5,*A13(MAXYMV)
MOVI 8000H,A1
BTST 0,A0
JRZ CR0
MOVI -08000H,A1
CR0 MOVE A1,*A13(YVL),L
CRT DEC A5
MOVE A5,*A13(MAXYMV)
JRNZ MV0
CLR A0
MOVE A0,*A8(OYVEL),L
RETS
MV0
MOVE @WORLDTLY,A0,L
ADDI [15,A0],A0
MOVE A0,A2
ADDI [120,0],A2
MOVE *A8(OYVAL),A1,L
CMP A1,A0
JRC OK
;TANK IS AT TOP OF SCREEN
MOVE *A13(YVL),A0,L
JRNN OK1
OK0 CLR A0
MOVE A0,*A13(MAXYMV)
MOVE A0,*A8(OYVEL),L
RETS
OK CMP A1,A2
JRNC OK2
;TANK AT BOTTOM OF SCRN
MOVE *A13(YVL),A0,L
JRNN OK0
OK2 MOVE *A13(YVL),A0,L ;MOVI 08000H,A0
OK1 MOVE A0,*A8(OYVEL),L
BTST 0,A5
JRZ MV1
;TREAD SET 2
PUSH A8
MOVE *A13(TRDLF),A8,L
MOVE *A8(OFLAGS),A4
MOVI TNKTRED2A,A1
CALLA ANI
MOVE *A13(TRDRF),A8,L
MOVE *A8(OFLAGS),A4
MOVI TNKTRED2A,A1
CALLA ANI
MOVE *A13(TRDLS),A8,L
MOVE *A8(OFLAGS),A4
MOVI TNKTRED2,A1
CALLA ANI
MOVE *A13(TRDRS),A8,L
MOVE *A8(OFLAGS),A4
MOVI TNKTRED2,A1
CALLA ANI
PULL A8
RETS
MV1
;TREAD SET 1
PUSH A8
MOVE *A13(TRDLF),A8,L
MOVE *A8(OFLAGS),A4
MOVI TNKTRED1A,A1
CALLA ANI
MOVE *A13(TRDRF),A8,L
MOVE *A8(OFLAGS),A4
MOVI TNKTRED1A,A1
CALLA ANI
MOVE *A13(TRDLS),A8,L
MOVE *A8(OFLAGS),A4
MOVI TNKTRED1,A1
CALLA ANI
MOVE *A13(TRDRS),A8,L
MOVE *A8(OFLAGS),A4
MOVI TNKTRED1,A1
CALLA ANI
PULL A8
RYT RETS
GUNBARL
;A10=BIG TANK PROC PNTR
;A9=BIG TANK BASE IMG PNTR
;A8=BARREL IMG
;RANDOM SLEEP
;WHEN PLAYER IS BELOW ME, SHOOT!
;MAYBE DO A LUNGE
MOVE A9,*A13(PDATA),L
MOVE A10,*A13(PDATA+32),L ;BIG TANK PROC
GB2
SLEEPK 10
CALLA RANDPL
MOVE @PLYRAD,A0
ADDI PLYROBJS,A0
MOVE *A0,A0,L
MOVE *A0(OYPOS),A2
MOVE *A0(OXPOS),A1
;IF PLAYER IS DIRECTLY BELOW TANK, SHOOT!
MOVE *A8(OXPOS),A3
SUB A1,A3
ABS A3
CMPI 90,A3
JRNC NO1
;YES PLYR IS IN X RANGE
MOVE *A8(OYPOS),A3
ADDI 170,A3 ;110
SUB A2,A3
ABS A3
CMPI 80,A3 ;30
JRC HT2 ;BR=SHOOT DOWN AT PLYR
MOVE *A8(OYPOS),A3
CMP A2,A3
JRNC HT
SUB A2,A3
ABS A3
CMPI 60,A3 ;50
JRNC NO1
;YES A HIT!
HT
;12=LUNGE BACKWARD INTO PLAYER
MOVE *A13(PDATA+32),A0,L
MOVE *A0(YVL),A1,L
JRN GB2
MOVI -10000H,A1
MOVE A1,*A0(YVL),L
MOVI 50,A1
MOVE A1,*A0(MAXYMV)
JRUC GB2
HT2
;13=SHOOT DOWN INTO PLAYER
MOVK 2,B0
MOVK 7,B1
CALLA RANGRAND
MOVE A0,A10
MOVE *A13(PDATA),A11,L ;BIG TANK BASE IMG PNTR
HT3
CREATE0 TBACK ;JAM BIG TANK BACKWARDS
CREATE0 TBLAST ;PLUME OF SMOKE
CREATE0 PJCTL ;PROJECTILE
MOVI GBLST,A9
JSRP FRANIMQ
SLEEPK 11
DSJ A10,HT3
SLEEP 90
JRUC GB2
NO1
;NO SHOOT OR LUNGE BACKWARD
;RANDOMLY DO SO THOUGH
MOVI 100,A0
CALLA RANDPER
JRNC GB2
JRC HT2
TBACK
;A11=TANK BASE IMG PNTR
MOVE *A11(OYPOS),A0
SUBK 3,A0
MOVE A0,*A11(OYPOS)
PUSH A13
MOVE *A11(OPLINK),A13,L
MOVE A11,A8
CALLA LINE_UP
PULL A13
SLEEPK 5
MOVE *A11(OYPOS),A0
ADDK 3,A0
MOVE A0,*A11(OYPOS)
PUSH A13
MOVE *A11(OPLINK),A13,L
MOVE A11,A8
CALLA LINE_UP
PULL A13
DIE
TBLAST
;A8=GUN BARREL
CALLA GETANIXY
CLR A6
CLR A7
ADDI 0880000H,A2 ;Y
MOVE A2,A1
MOVE A3,A0
MOVI 163,A3 ;133
MOVI DMAWNZ|M_NOCOLL,A4
MOVI CLSDEAD,A5
MOVI T72BLAST1,A2
CALLA BEGINOBJ2
MOVI CANNON,A0
CALLA ONESND
MOVI TBLST,A9
jauc FRQDELDIE
GBLST .LONG T72TURET1
.WORD 2
.LONG T72TURET2
.WORD 3
.LONG T72TURET1
.WORD 1
.LONG 0
TBLST .LONG T72BLAST1
.WORD 3
.LONG T72BLAST2
.WORD 3
.LONG T72BLAST3
.WORD 3
.LONG T72BLAST4
.WORD 3
.LONG T72BLAST5
.WORD 3
.LONG T72BLAST6
.WORD 3
.LONG T72BLAST7
.WORD 3
.LONG T72BLAST8
.WORD 3
.LONG 0
PJCTL
;A8=GUN BARREL
SLEEPK 8
CALLA GETANIXY
CLR A6
MOVI 50000H,A7
ADDI 0880000H,A2 ;Y
SUBI 010000H,A3 ;X
MOVE A2,A1
MOVE A3,A0
MOVI 162,A3 ;133
MOVI DMAWNZ,A4
MOVI CLSENMY|TYPSHOT,A5
MOVI TNKBUL,A2
CALLA BEGINOBJ2
SLEEP 80
jauc DELOBJDIE
RANDPL
CALLA RANDOM
BTST 0,A0
JRZ PLY1
;WILL TRY TO LAZER PLAYER 2
MOVE @PLYROBJS+32,A1,L
JRZ PLY3
PLY2 MOVK 32,A0
MOVE A0,@PLYRAD
RETS
PLY1 MOVE @PLYROBJS,A1,L
JRZ PLY2
PLY3 CLR A0
MOVE A0,@PLYRAD
RETS
MOD_VELS
MOVE A0,*A8(OYVEL),L
MOVE *A13(BRL),A1,L
MOVE A0,*A1(OYVEL),L
MOVE *A13(TRDLF),A1,L
MOVE A0,*A1(OYVEL),L
MOVE *A13(TRDRF),A1,L
MOVE A0,*A1(OYVEL),L
MOVE *A13(TRDLS),A1,L
MOVE A0,*A1(OYVEL),L
MOVE *A13(TRDRS),A1,L
MOVE A0,*A1(OYVEL),L
MOVE *A13(SHADR),A1,L
MOVE A0,*A1(OYVEL),L
MOVE *A13(SHADF),A1,L
MOVE A0,*A1(OYVEL),L
RETS
;TNKL .EQU PDATA ;UHL TANK LEFT PTR
;BRL .EQU PDATA+32 ;UHL BIG GUN BARREL
;TRDLF .EQU PDATA+64 ;UHL TANK LEFT/FRONT TREAD
;TRDRF .EQU PDATA+96 ;UHL TANK RGT/FRONT TREAD
;TRDLS .EQU PDATA+128 ;UHL TANK LEFT/SIDE TREAD
;TRDRS .EQU PDATA+160 ;UHL TANK RGT/SIDE TREAD
;SHADR .EQU PDATA+192 ;UHL SHADOW ON RIGHT SIDE OF TANK
;SHADF .EQU PDATA+224 ;UHL SHADOW IN FRONT OF TANK
LINE_UP
CALLA GETANIXY
MOVE *A13(BRL),A0,L
MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE
CALLA GANISAG
CALLA GETANIXY
MOVE *A13(TRDLF),A0,L
MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE
ADDI 010000H,A3 ;SUB 1 FROM X
SUBI 010000H,A2 ;SUB 1 FROM Y
CALLA GANISAG
;ADJUST
CALLA GETANIXY
MOVE *A13(TRDRF),A0,L
MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE
SUBI 020000H,A3 ;SUB 1 FROM X
SUBI 010000H,A2 ;SUB 1 FROM Y
CALLA GANISAG
;ADJUST
CALLA GETANIXY
MOVE *A13(TRDLS),A0,L
MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE
CALLA GANISAG
;ADJUST
CALLA GETANIXY
MOVE *A13(TRDRS),A0,L
MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE
SUBI 010000H,A3 ;SUB 1 FROM X
CALLA GANISAG
;ADJUST
CALLA GETANIXY
MOVE *A13(SHADR),A0,L
MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE
ADDI 0230000H,A3 ;SUB 1 FROM X
SUBI 0150000H,A2 ;SUB 1 FROM Y
CALLA GANISAG
;DO FRONT SHADOW
CALLA GETANIXY
MOVE *A13(SHADF),A0,L
MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE
ADDI 010000H,A3 ;SUB 1 FROM X
SUBI 010000H,A2 ;SUB 1 FROM Y
CALLA GANISAG
RETS
;
ONLIST .LONG 0,T1,T2,T3,T4,T5,T6,T7,T8
T1 ;WHOLE TANK
.LONG 0,0,T72TNK
.WORD 130,DMAWNZ|M_PIXSCAN,CLSENMY|TYPT72|SUBTK
.LONG 0,0
T2
.LONG 0,0,T72TURET1
.WORD 160,DMAWNZ|M_NOCOLL,CLSDEAD
.LONG 0,0
T3
;TREAD LFT FRONT
.LONG 0,0,TNKTRED1A
.WORD 130,DMAWNZ+M_NOCOLL,CLSDEAD
.LONG 0,0
T4 ;TREAD RGT FRONT
.LONG 0,0,TNKTRED1A
.WORD 130,DMAWNZ+M_FLIPH+M_NOCOLL,CLSDEAD
.LONG 0,0
T5 ;TREAD LEFT SIDE
.LONG 0,0,TNKTRED1
.WORD 130,DMAWNZ+M_NOCOLL,CLSDEAD
.LONG 0,0
T6 ;TREAD RGT SIDE
.LONG 0,0,TNKTRED1
.WORD 130,DMAWNZ+M_FLIPH+M_NOCOLL,CLSDEAD
.LONG 0,0
T7 ;SHAD RGT
.LONG 0,0,TNKSHAD2
.WORD 29,DMAWNZ+M_NOCOLL,CLSDEAD
.LONG 0,0
T8 ;SHAD FRONT
.LONG 0,0,TNKSHAD1
.WORD 29,DMAWNZ+M_NOCOLL,CLSDEAD
.LONG 0,0
;
;TREAD ANIMATION TABLES
;
TRDSDLL
.LONG TNKTRED1
.WORD FLIPBITS|02,0
.LONG TNKTRED2
.WORD 02
.LONG 0
TRDSDRL
.LONG TNKTRED1
.WORD FLIPBITS|02,(M_FLIPH)
.LONG TNKTRED2
.WORD 02
.LONG 0
TRDFTLL
.LONG TNKTRED1A
.WORD FLIPBITS|02,0
.LONG TNKTRED2A
.WORD 02
.LONG 0
TRDFTRL
.LONG TNKTRED1A
.WORD FLIPBITS|02,(M_FLIPH)
.LONG TNKTRED2A
.WORD 02
.LONG 0
SHAKEME
;A10=OPLINK OF IMG TO SHAKE (BIG TANK)
CREATE0 XYADJ2
CREATE0 XYCNTR
MOVE A10,A11
MOVE A0,*A13(PDATA),L
MOVE A9,A10
ADD A9,A10
ADD A9,A10
SH2
PUSH A13
MOVE A11,A13
MOVE *A13(TNKL),A8,L
CALLR LINE_UP
PULL A13
SLEEPK 1
DSJ A10,SH2
MOVE *A13(PDATA),A0,L
CALLA KILL
DIE
XYCNTR
;DRIFT TANK TOWARD CENTER
MOVK 2,B0
MOVK 4,B1
CALLA RANGRAND
SLL 16,A0
MOVE A0,A5
MOVK 2,B0
MOVK 4,B1
CALLA RANGRAND
SLL 16,A0
MOVE @WORLDTLX,A6,L
ADDI [170,0],A6
MOVE *A8(OXVAL),A1,L
CMP A6,A1
JRLT ADI
;TANK X TO RIGHT OF CENTER, SUBTRACT FROM TANK X
NEG A0
ADI ADD A0,A1
MOVE A1,*A8(OXVAL),L
MOVE @WORLDTLY,A6,L
ADDI [90,0],A6
MOVE *A8(OYVAL),A1,L
CMP A6,A1
JRLT SDI
;TANK Y BELOW CENTER OF SCRN, SUBTRACT FROM TANK Y
NEG A5
SDI ADD A5,A1
MOVE A1,*A8(OYVAL),L
SLEEP 42
JRUC XYCNTR
XYADJ2
;ADJUST TANK X/Y
;A9 = LENGTH OF JERK TIME
;A10=OPLINK OF IMG TO SHAKE (BIG TANK)
MOVE *A10(TNKL),A8,L
XY22
MOVI -8,B0
MOVK 8,B1
CALLA RANGRAND
MOVE *A8(OXPOS),A1
ADD A0,A1
MOVE A1,*A8(OXPOS)
MOVI -7,B0
MOVK 7,B1
CALLA RANGRAND
MOVE *A8(OYPOS),A1
ADD A0,A1
MOVE A1,*A8(OYPOS)
SLEEPK 3
DEC A9
JRNZ XY22
DIE
XYNEW
MOVI -3,B0
MOVK 3,B1
CALLA RANGRAND
MOVE *A8(OXPOS),A1
ADD A0,A1
MOVE A1,*A8(OXPOS)
MOVI -3,B0
MOVK 3,B1
CALLA RANGRAND
MOVE *A8(OYPOS),A1
ADD A0,A1
MOVE A1,*A8(OYPOS)
SLEEPK 3
DEC A9
JRNZ XY22
DIE
*****************************************************************************
.DEF STRT_AJP,ONEJEEP,SPAWN_JEEPS,JEEPCYC,SPAWN_JEEPS2
.DEF LIMO
LIMO2
CLR A0
MOVE A0,*A13(HITS),W
MOVI [500,0],A0
MOVI [150-110,0],A1
MOVI AKHSHAD,A2
MOVK 29,A3
MOVI DMAWNZ|M_NOCOLL,A4
MOVI CLSDEAD,A5
MOVI [-4,0],A6
CLR A7
CALLA BEGINOBJ ;SHAD
MOVE A8,*A13(PDATA),L
MOVI [498,0],A0
MOVI [151-110,0],A1
MOVI AKHLIMO,A2
MOVI 09EH,A3 ;9E
MOVI DMAWNZ,A4
MOVI CLSENMY|TYPT72|SUBTK,A5
; MOVI [4,0],A6
; CLR A7
CALLA BEGINOBJ ;LIMO
MOVE A8,A9
MOVI [500,0],A0
MOVI [152-110,0],A1
MOVI AKHBITCH1,A2
MOVI 09EH,A3
MOVI DMAWNZ,A4
; MOVI CLSENMY|TYPT72|SUBTK,A5
; MOVI [4,0],A6
; CLR A7
CALLA BEGINOBJ ;BOOB
CREATE BOOBPID,ANIBOOB
CREATE BOOBPID,BOOBSND
MOVE A8,*A13(PDATA+32),L
MOVI [19AH,0],A0
MOVI [0E1H-110,0],A1
MOVI AKHTIREA,A2
MOVI 09DH,A3
MOVI DMAWNZ|M_NOCOLL,A4
MOVI CLSDEAD,A5
; MOVI [4,0],A6
CLR A7
CALLA BEGINOBJ ;TIRE
CREATE BOOBPID,ANITIRE
MOVE A8,A10
MOVI [210H,0],A0
MOVI [0E1H-110,0],A1
MOVI AKHTIREA,A2
MOVI 09DH,A3
MOVI DMAWNZ|M_NOCOLL,A4
; MOVI CLSDEAD,A5
; MOVI [4,0],A6
CLR A7
CALLA BEGINOBJ ;TIRE
CREATE BOOBPID,ANITIRE
ZLSJP SLEEPK 1
CALLA VULN
MOVE @WORLDTLX,A0,L
MOVE *A9(OXVAL),A1,L
SUBI [300,0],A0
CMP A0,A1
JRNC ZLSJP
; CMPI [500,0],A1
; JRNC ZLSJP
JRUC ZOUT
LIMO
CLR A0
MOVE A0,*A13(HITS),W
MOVI [200-300,0],A0
MOVI [150,0],A1
MOVI AKHSHAD,A2
MOVK 29,A3
MOVI DMAWNZ|M_NOCOLL|M_FLIPH,A4
MOVI CLSDEAD,A5
MOVI [4,0],A6
CLR A7
CALLA BEGINOBJ ;SHAD
MOVE A8,*A13(PDATA),L
MOVI [198-300,0],A0
MOVI [151,0],A1
MOVI AKHLIMO,A2
MOVI 09EH,A3 ;9E
MOVI DMAWNZ|M_FLIPH,A4
MOVI CLSENMY|TYPT72|SUBTK,A5
MOVI [4,0],A6
CLR A7
CALLA BEGINOBJ ;LIMO
MOVE A8,A9
MOVI [200-300,0],A0
MOVI [152,0],A1
MOVI AKHBITCH1,A2
MOVI 09EH,A3
MOVI DMAWNZ|M_FLIPH,A4
MOVI CLSENMY|TYPT72|SUBTK,A5
MOVI [4,0],A6
CLR A7
CALLA BEGINOBJ ;BOOB
CREATE BOOBPID,ANIBOOB
CREATE BOOBPID,BOOBSND
MOVE A8,*A13(PDATA+32),L
MOVI [0A9H-300,0],A0
MOVI [0E3H-2,0],A1
MOVI AKHTIREA,A2
MOVI 09DH,A3
MOVI DMAWNZ|M_NOCOLL|M_FLIPH,A4
MOVI CLSDEAD,A5
MOVI [4,0],A6
CLR A7
CALLA BEGINOBJ ;TIRE
CREATE BOOBPID,ANITIRE
MOVE A8,A10
MOVI [011EH-300,0],A0
MOVI [0E3H-2,0],A1
MOVI AKHTIREA,A2
MOVI 09DH,A3
MOVI DMAWNZ|M_NOCOLL|M_FLIPH,A4
MOVI CLSDEAD,A5
MOVI [4,0],A6
CLR A7
CALLA BEGINOBJ ;TIRE
CREATE BOOBPID,ANITIRE
LSJP SLEEPK 1
CALLA VULN
MOVE @WORLDTLX,A0,L
MOVE *A9(OXVAL),A1,L
ADDI [400,0],A0
CMP A0,A1
JRC LSJP
CMPI [500,0],A1
JRNC LSJP
ZOUT MOVI BOOBPID,A0
CALLA KIL1C
CALLA DELOBJA8
MOVE A9,A0
CALLA DELOBJ
MOVE A10,A0
CALLA DELOBJ
MOVE *A13(PDATA),A0,L
CALLA DELOBJ
MOVE *A13(PDATA+32),A8,L
jauc DELOBJDIE
ANIBOOB
MOVI BOOBS,A9
JSRP FRANIMQ
SLEEPK 20
JRUC ANIBOOB
ahkbang .word >f9F7,10,>80ef,0 ;^ angry
BOOBSND SLEEPK 10
MOVI JEEPSND,A0
CALLA ONESNDOVR
SLEEP 03AH-40
MOVI ahkbang,A0
CALLA ONESNDOVR
DIE
BOOBS .LONG AKHBITCH2
.WORD 60-40
.LONG AKHBITCH4
.WORD 6
.LONG AKHBITCH1
.WORD 6
.LONG AKHBITCH3
.WORD 6
.LONG AKHBITCH5
.WORD 6
.LONG AKHBITCH6
.WORD 6
.LONG AKHBITCH5
.WORD 6
.LONG AKHBITCH6
.WORD 6
.LONG AKHBITCH3
.WORD 6
.LONG AKHBITCH4
.WORD 6
.LONG AKHBITCH1
.WORD 6
.LONG AKHBITCH3
.WORD 6
.LONG AKHBITCH4
.WORD 6
.LONG AKHBITCH1
.WORD 6
.LONG AKHBITCH2
.WORD 6
.LONG 0
ANITIRE
MOVI AKHTIREA,A1
MOVE *A8(OFLAGS),A4
CALLA ANI
SLEEPK 3
MOVI AKHTIREB,A1
MOVE *A8(OFLAGS),A4
CALLA ANI
SLEEPK 3
JRUC ANITIRE
STRT_AJP
CLR A0
MOVE A0,*A13(HITS),W
PUSH A8
MOVE *A8(OXVAL),A0,L
ADDI [50,0],A0
MOVE *A8(OYVAL),A1,L
MOVI JSHAD,A2
MOVK 29,A3
MOVI DMAWNZ|M_NOCOLL,A4
MOVI CLSDEAD,A5
CLR A6
CLR A7
CALLA BEGINOBJ2
MOVE A8,A10
CALLA BEGINOBJ2
CALLA OBJOFF
MOVE A8,A9
PULL A8
MOVE A8,A11
MOVE *A8(OXVAL),A0,L
ADDI [50,0],A0
MOVE *A8(OYVAL),A1,L
; SUBI [0,0],A1
MOVI JEEP,A2
MOVI 09EH,A3
MOVI DMAWNZ,A4
MOVI CLSENMY|TYPT72|SUBTK,A5
CLR A6
CLR A7
CALLA BEGINOBJ2
MOVI JEEPP2,A0
CALLA GETFPAL ;GET A COLOR MAP ASSIGNMENT
MOVE A0,*A8(OPAL),W ;STORE THE NEW PALETTE
MOVE A11,A0
CALLA DELOBJ
SJP SLEEPK 1
CALLA VULN
MOVE @WORLDTLX,A0,L
MOVE *A8(OXVAL),A1,L
ADDI [95,0],A1
CMP A0,A1
JRNC SJP
CALLA DELOBJA8
MOVE A10,A0
CALLA DELOBJ
DIE
SPAWN_HJP
;SPAWN A JEEP IS CALLED FROM 'WAVE OVERLORD' CODE WHICH DISPERSES
;BAD GUYS THROUGHOUT A WAVE
MOVE @HALT,A0
JRNZ TANK_OUT
MOVI 350,A0
CALLA RANDPER
JRNC TANK_OUT
;ANY RUNNING HOSTAGES OUT?
MOVI CLSNEUT|TYPHSTG|SUBRUN,A0
CLR A1
NOT A1
CALLA EXISTOBJ
JRNZ TANK_OUT ;BR=RUNNRS OUT!
CREATE JEEPID,DOHJEEP ;OCCASIONALLY
RETS
SPAWN_JEEPS
;SPAWN A JEEP IS CALLED FROM 'WAVE OVERLORD' CODE WHICH DISPERSES
;BAD GUYS THROUGHOUT A WAVE
MOVE @HALT,A0
JRNZ TANK_OUT
MOVI 100,A0
CALLA RANDPER
JRNC TANK_OUT
;ANY RUNNING HOSTAGES OUT?
MOVI CLSNEUT|TYPHSTG|SUBRUN,A0
CLR A1
NOT A1
CALLA EXISTOBJ
JRNZ TANK_OUT ;BR=RUNNRS OUT!
CREATE JEEPID,DOJEEP ;FUTUREPID ;OCCASIONALLY
TANK_OUT:
RETS
SPAWN_JEEPS2
MOVE @HALT,A0
JRNZ TANK_OUT
MOVE @LANES,A2
CMPI 0FH,A2
JRZ TANK_OUT
SPJ2 MOVK 3,A0
CALLA RNDRNG0
ANDI 03H,A0
BTST A0,A2
JRNZ SPJ2
MOVE A0,A9
SLL 3,A0
ADDI STAB,A0
MOVB *A0,A0
OR A0,A2
MOVE A2,@LANES
CREATE JEEPID,DOJEEP2
RETS
STAB .BYTE 1,2,4,8
STAB2 .BYTE 0EH,0DH,0BH,07H
.EVEN
JPX .LONG [208,214],[0,4],[194,200]
JPX2 .WORD 45H,09FH,0F8H,014CH
DOJEEP2
;LOCK DOWN JEEP SPAWN CODE
MOVE A9,*A13(LANE),W
MOVI JEEPS2,A2
CALLA GET_WVADDR
MOVE *A0(16),A1,W ;DEC WAVE RAM CNT FOR THIS JEEP
DEC A1
MOVE A1,*A0(16),W
JRNZ DOJ2
MOVE @WAVE,A0
SUBK 7,A0
JRZ DOJ2
CREATE0 GOBK
;CMBAK WITH A WARP DISC!
DOJ2
SLL 4,A9
ADDI JPX2,A9
MOVE *A9+,A10
SLL 16,A10
; MOVI [1,04000H],B0
; MOVI [3,01000H],B1
MOVI [1,08000H],B0
MOVI [3,00000H],B1
CALLA RANGRAND
MOVE A0,A11 ;VERT SPEED FOR JEEP
MOVI 100,A0
CALLA RNDRNG0
MOVE A0,A9
CALLA PRCSLP
CLR A0
MOVE A0,*A13(HITS),W
MOVE A0,*A13(KPTSOBJ),L
MOVE A0,*A13(KPTSO),L
BTST 0,A9
JRZ DOWNJP
;THIS JEEP WILL GO UP SCREEN
NEG A11
MOVE A11,A7 ;VERT SPEED FOR JEEP
;A10=X POS
MOVE A10,A0
PUSH A0
MOVI [240,0],A1
MOVI JSHAD2,A2
MOVK 29,A3
MOVI DMAWNZ|M_NOCOLL,A4
MOVI CLSDEAD,A5
CLR A6
CALLA BEGINOBJ
MOVE A8,A10
PULL A0
PUSH A0
MOVI [240,0],A1
MOVI JEEPDRVRS,A2
MOVI 158,A3
MOVI DMAWNZ|M_NOCOLL,A4
MOVI CLSDEAD,A5
CLR A6
MOVE *A10(OYVEL),A7,L
CALLA BEGINOBJ
CALLA OBJOFF
MOVE A8,A9
PULL A0
MOVI [240,0],A1
MOVI JEEP2,A2
JRUC ALLJP
DOWNJP
;TOP DOWN
;A10=X POS
;A11=SPEED
MOVE A11,A7 ;VERTICAL SPEED
MOVE A10,A0
PUSH A0
MOVI [-125,0],A1
MOVI JSHAD,A2
MOVK 29,A3
MOVI DMAWNZ|M_NOCOLL,A4
MOVI CLSDEAD,A5
CLR A6
CALLA BEGINOBJ
MOVE A8,A10
PULL A0
PUSH A0
MOVI [-125,0],A1
MOVI JEEPDRVRS,A2
MOVE @PCNT,A3
BTST 0,A3
JRZ ZJPZ
MOVI FNDSIT,A2
ZJPZ MOVI 158,A3
MOVI DMAWNZ|M_NOCOLL,A4
MOVI CLSDEAD,A5
CLR A6
MOVE *A10(OYVEL),A7,L
CALLA BEGINOBJ
MOVE A8,A9
PULL A0
MOVI [-125,0],A1
MOVI JEEP,A2
ALLJP
MOVI 09EH,A3
MOVI DMAWNZ,A4
MOVI CLSENMY|TYPT72|SUBTK,A5
CLR A6
MOVE *A10(OYVEL),A7,L
CALLA BEGINOBJ
CLR A0
MOVE A0,*A13(MYPLYR)
MOVI JEEPSND,A0
CALLA ONESND
JRUC JTOP
GOBK SLEEP 260
MOVK 1,A0
MOVE A0,@ICONS_DN
MOVI FIXPID,A0 ;GET RID OF SPECIAL GUN STUFF
CALLA KIL1C
MOVK 11,A10 ;NO DOUBLE SCORE BONUS
MOVI [-16,0],A9 ;Y ADD IN VALUE
CREATE0 ZONE_TXT2
;DISPLAY GOT AWAY #
SLEEPK 30
MOVI 3E3EH,A6 ;COLOR CYCLE DIGITS
MOVI GWAY,A8
MOVI [0B4H,0BBH],A9 ;SCRN Y/X
MOVI RD15FONT,A11 ;FONT TABLE
MOVK 2,A10 ;Y,X SPACING BETWEEN CHARCTERS
CLR A0
MOVE A0,@WRLD
JSRP STRCNRMO
;DIGITS
MOVE @GET_AWAY,A8
JRNZ FX
;SOMEBODY WAS PERFECT!
INC A8 ;PSYCHE!
FX CALLA HEXTOASC
MOVI 3E3EH,A6 ;COLOR CYCLE DIGITS
MOVI [0B4H,0118H],A9 ;SCRN Y/X
CLR A0
JSRP STRLNRMO
.REF DO_DESTROY
JSRP DO_DESTROY
SLEEP 240
CREATE WARPPID,GOBACK
DIE
GWAY .BYTE "JEEPS ESCAPED:",0
.EVEN
SPAWN_MOM:
MOVE @HALT,A0
JRNZ TANK_OUT
MOVE @SKIPR_CNT,A2
MOVK 17,A3
CMP A3,A2
JRGT TANK_OUT
CREATE shawnpid,DOMOM
RETS
MPX .LONG [208,214],[80,300],[180,230]
DOMOM
MOVI MOM,A2
CALLA GET_WVADDR
MOVE *A0(16),A1,W ;DEC WAVE RAM CNT FOR THIS MOM
DEC A1
MOVE A1,*A0(16),W
JRNZ DOM1
MOVE @WAVE,A1
CMPI 31,A1
JRNZ DOM1
;TIME TO CAPTURE PLAYER
PUSH A0
CREATE0 DOLR
MOVI 20*60,A0
MOVE @PLYRPRCS,A1,L
JRZ HI
MOVE A0,*A1(DELYDET)
HI MOVE @PLYRPRCS+32,A1,L
JRZ HI2
MOVE A0,*A1(DELYDET)
HI2
PULL A0
DOM1
MOVE *A0(32),A0 ;GET JEEPS RANGE PNTR
SLL 5,A0
ADDI MPX,A0
MOVE *A0+,A1
MOVE *A0,A2
SLL 16,A1
SLL 16,A2
MOVE A1,B1
MOVE A2,B0
CALLA RANGRAND
MOVE A0,A8
SRL 16,A8
;A8=CORRECT X
move @WORLDTLX+16,a0
ADD A0,A8
move @WORLDTLY+16,a9
subi 120,a9
; MOVI bloodsnd,a0
; calla ONESND
JAUC spidmom_start
ermtune .word >f3fF,10,>8004,0 ;Electrocution tune
DOLR SLEEP 60
movi CLSENMY+TYPSL,a0
CLR A1
NOT A1
CALLA EXISTOBJ
JRNZ DOLR
CREATE0 DO_WINNER
SLEEP 160
CLR A0
MOVE A0,@EN_CURRENT,L ;CURRENT RECT LIST
MOVE A0,@SITLST,L
MOVK 32,A0
MOVE A0,@ICONS_DN
CALLA DOLORD
SLEEP 290
MOVK 1,A0
MOVE A0,@HALT
MOVK 18,A10 ;YOU ARE CAPTURED
MOVI [-16,0],A9 ;Y ADD IN VALUE
CREATE0 ZONE_TXT2
SLEEP 120
MOVI WRPSND,A0
CALLA ONESND
.REF INIT_SCORE,FADE_STRT,IRQSKYE,SCRLUP,TAUNTOUT,SCORE_FLAG
MOVK 1,A0
MOVE A0,@TAUNTOUT
CALLA INIT_SCORE ;TURNS ON REGULAR IMAGES FOR SCORES
CREATE0 TUNEDELAY
CLR A0
MOVE A0,@SCORE_FLAG
CREATE 3100,SCRLUP
MOVI PALDNO2,A11
JSRP FADE_STRT
; CALLA CLNBPAL
;FRY PLAYERS
CLR A1
MOVE A1,@IRQSKYE
; movk 10,a0
; move a0,@WORLDTLX+16
; movi 960,a0
; move a0,@WORLDTLY+16
CLR A8
MOVE A8,@HALT
JAUC fry_plyrs
TUNEDELAY
SLEEP 80
movi ermtune,a0
calla ONESND
DIE
PALDNO2 .LONG 5*32*32+5*32+5,0
;bloodsnd .word >faa0,20,>809a,0
JPY .LONG [70,100],[100,140]
JEEP_ROAD
;5=FROM LEFT TOP LANE
;6=FROM LEFT BOTM LANE
;7=FROM RIGHT TOP LANE
;8=FROM RIGHT BOTM LANE
MOVE A9,*A13(MYTYP)
MOVI JEEPSND,A0
CALLA ONESND
SLL 5,A9
MOVI JWY,A2
ADD A9,A2
MOVE *A2,A10,L
MOVI [3,01000H],B0
MOVI [4,02000H],B1
; MOVI [2,0F000H],B0
; MOVI [4,08000H],B1
CALLA RANGRAND
MOVE A0,A6 ;HORZ SPEED FOR JEEP
JRUC INHJP
JWY .LONG [0FF72H,0],[0FF72H,0],[0FFD0H,0],[0FFD0H,0],[024H,0]
.LONG [24H,0],[083H,0],[06H,0],[06BH,0]
DOHJEEP
;LOCK DOWN JEEP SPAWN CODE
CLR A0
MOVE A0,*A13(LANE),W
MOVI HJEEP,A2
CALLA GET_WVADDR
MOVE *A0(16),A1,W ;DEC WAVE RAM CNT FOR THIS JEEP
DEC A1
MOVE A1,*A0(16),W
MOVE *A0(32),A0 ;GET JEEPS RANGE PNTR
SLL 5,A0
ADDI JPY,A0
MOVE *A0+,A1
MOVE *A0,A2
SLL 16,A1
SLL 16,A2
MOVE A1,B1
MOVE A2,B0
;TURN ON A HZ JEEP AND SEND HIM AT PLAYER
CALLA RANGRAND
MOVE A0,A10
MOVI [2,01000H],B0
MOVI [3,0a000H],B1
; MOVI [1,0F000H],B0
; MOVI [3,08000H],B1
CALLA RANGRAND
MOVE A0,A6 ;HORZ SPEED FOR JEEP
INHJP
CLR A0
MOVE A0,*A13(HITS),W
MOVE A0,*A13(KPTSOBJ),L
MOVE A0,*A13(KPTSO),L
;
MOVI [-100,0],A0
MOVE A10,A1
MOVI JEEP4,A2
MOVI 09EH,A3
MOVI DMAWNZ|M_FLIPH,A4
MOVI CLSENMY|TYPT72|SUBTK,A5
CLR A7
CALLA BEGINOBJ
CLR A0
MOVE A0,*A13(MYPLYR)
SLEEPK 3
MOVE *A13(MYTYP),A0
JRNZ HJTOP
JSRP GET_HORN
HJTOP
SLEEPK 1
CALLA VULN
MOVE *A8(OXVAL),A1,L
MOVE @WORLDTLX,A0,L
ADDI [400,0],A0
CMP A0,A1
JRC HJTOP
;5=FROM LEFT TOP LANE
;6=FROM LEFT BOTM LANE
;7=FROM RIGHT TOP LANE
;8=FROM RIGHT BOTM LANE
MOVE *A13(MYTYP),A0
CLR A1
CMPI 5,A0
JRZ TOPF
CMPI 6,A0
JANZ DELOBJDIE
MOVE A1,@BOTFLG
jauc DELOBJDIE
TOPF
MOVE A1,@TOPFLG
jauc DELOBJDIE
GET_HORN
MOVI HORNSND,A0
MOVE @PCNT,A1
BTST 0,A1
JRZ DOS
MOVI HORN2,A0
CALLA ONESND
SLEEPK 30
JRUC DS1
DOS CALLA ONESND
SLEEPK 15
DS1 MOVI JEEPSND,A0
CALLA ONESND
RETP
DOJEEP
;LOCK DOWN JEEP SPAWN CODE
MOVI JEEPS,A2
CALLA GET_WVADDR
MOVE *A0(16),A1,W ;DEC WAVE RAM CNT FOR THIS JEEP
DEC A1
MOVE A1,*A0(16),W
MOVE *A0(32),A0 ;GET JEEPS RANGE PNTR
SLL 5,A0
ADDI JPX,A0
MOVE *A0+,A1
MOVE *A0,A2
SLL 16,A1
SLL 16,A2
MOVE A1,B1
MOVE A2,B0
;TURN ON A JEEP AND SEND HIM DOWN AT PLAYER
CALLA RANGRAND
MOVE A0,A10
MOVI [1,0a000H],B0 ;11/22/91
MOVI [3,08000H],B1
; MOVI [1,04000H],B0
; MOVI [2,0E000H],B1
CALLA RANGRAND
MOVE A0,A9 ;VERT SPEED FOR JEEP
ONEJEEP
;CKFORY4A
;A10=X POS
;A9=SPEED
CLR A0
MOVE A0,*A13(HITS),W
MOVE A0,*A13(KPTSOBJ),L
MOVE A0,*A13(KPTSO),L
MOVE A0,*A13(LANE),W
MOVE A9,A7 ;VERTICAL SPEED
MOVE A10,A0
PUSH A0
MOVI [-125,0],A1
MOVI JSHAD,A2
MOVK 29,A3
MOVI DMAWNZ|M_NOCOLL,A4
MOVI CLSDEAD,A5
CLR A6
CALLA BEGINOBJ
MOVE A8,A10
PULL A0
PUSH A0
MOVI [-125,0],A1
MOVI JEEPDRVRS,A2
MOVE @PCNT,A3
BTST 0,A3
JRZ JPZ
MOVI FNDSIT,A2
JPZ MOVI 158,A3
MOVI DMAWNZ|M_NOCOLL,A4
MOVI CLSDEAD,A5
CLR A6
MOVE *A10(OYVEL),A7,L
CALLA BEGINOBJ
MOVE A8,A9
PULL A0
MOVI [-125,0],A1
MOVI JEEP,A2
MOVI 09EH,A3
MOVI DMAWNZ,A4
MOVI CLSENMY|TYPT72|SUBTK,A5
CLR A6
MOVE *A10(OYVEL),A7,L
CALLA BEGINOBJ
CLR A0
MOVE A0,*A13(MYPLYR)
SLEEPK 3
JSRP GET_HORN
JTOP
SLEEPK 1
CALLA VULN
MOVE *A8(OYVAL),A1,L
JRNN J200
MOVE *A8(OYVEL),A0,L
JRN GAWAY ;BR=GOING UP AND OFF SCRN
JRUC JTOP
J200
MOVE @WORLDTLY,A0,L
ADDI [265,0],A0
CMP A0,A1
JRC JTOP
GAWAY MOVE @GET_AWAY,A0
ADDK 1,A0
MOVE A0,@GET_AWAY ;JEEPS GOT AWAY
CLNUP MOVE *A13(LANE),A0
MOVE @LANES,A1
SLL 3,A0
ADDI STAB2,A0
MOVB *A0,A0
AND A0,A1
MOVE A1,@LANES
MOVE *A8(OIMG),A1,L
CALLA DELOBJA8
CMPI JEEP4,A1
JRZ HZJP
MOVE A9,A0
CALLA DELOBJ
MOVE A10,A0
CALLA DELOBJ
DIE
HZJP
;5=FROM LEFT TOP LANE
;6=FROM LEFT BOTM LANE
;7=FROM RIGHT TOP LANE
;8=FROM RIGHT BOTM LANE
MOVE *A13(MYTYP),A0
CLR A1
CMPI 5,A0
JRZ TOPF2
CMPI 6,A0
JANZ SUCIDE
MOVE A1,@BOTFLG
DIE
TOPF2
MOVE A1,@TOPFLG
DIE
JPDIE
;JEEP WILL DIE
;SHAKE SCRN
CLR A0
MOVE A0,*A8(OYVEL),L
MOVE A0,*A8(OXVEL),L
MOVE *A8(OIMG),A1,L
CMPI JEEP4,A1
JRZ AHZJP
MOVE A0,*A9(OYVEL),L
MOVE A0,*A10(OYVEL),L
AHZJP MOVE *A8(OFLAGS),A0
ORI M_NOCOLL,A0
MOVE A0,*A8(OFLAGS)
CREATE FUTUREPID,SENDGRN
PUSH A10
MOVK 1,A10 ;3
CREATE0 DOE
PULL A10
SLEEPK 30
MOVI CRASH,A0
CALLA ONESND
JRUC CLNUP
CRASH .WORD >FCF5,68,>8038,0 ;CAR CRASH EXPLOSION
;KPTSOBJ .EQU PDATA ;UHL
;HITS .EQU PDATA+336 ;UHW HITS ABSORBED
;USED IN ARAB.ASM
;CNTR .EQU PDATA+464 ;UHW
;FROM T72 - USED IN VULN - VULNERABILITY
.BSS PALTMP1,4*16*2 ;ALLOCATE 2 X COLOR AREA IN RAM
JEEPCYC
MMTM SP,A8,A9,A10,A11
MOVI JEEPP,A8 ;PAL NAME
MOVI PALTMP1,A9 ;RAM AREA
MOVI [38,40],A10 ;BEGIN/END COLOR #
MOVK 4,A11 ;RATE IN TICKS
CREATE CYCPID,COLCYC ;COLOR CYCLER ON
MMFM SP,A8,A9,A10,A11
RETS
.END