1321 lines
24 KiB
NASM
1321 lines
24 KiB
NASM
.FILE 'NARCDOG.ASM'
|
||
.TITLE " <<< N A R C -- PIT BULLS >>>"
|
||
|
||
**************************************************************************
|
||
* *
|
||
* COPYRIGHT (C) 1988 WILLIAMS ELECTRONICS GAMES, INC. *
|
||
* ALL RIGHTS RESERVED. *
|
||
* *
|
||
**************************************************************************
|
||
|
||
.WIDTH 132
|
||
.OPTION B,D,L
|
||
.MNOLIST
|
||
|
||
* GET THE SYSTEM STUFF
|
||
.INCLUDE "\video\MPROCEQU.ASM" ;MPROC equates
|
||
.INCLUDE "\video\DISPEQU.ASM" ;Display processor equates
|
||
.INCLUDE "\video\GSP.INC" ;GSP assembler equates
|
||
.INCLUDE "\video\SYS.INC" ;Zunit system equates
|
||
.INCLUDE "\video\MACROS.HDR" ;Macros, Yeah!
|
||
* LOCAL STUFF
|
||
.INCLUDE "NARCEQU.ASM" ;NARC Equates
|
||
.INCLUDE "NARCTEQU.ASM" ;TODD JIZZ
|
||
.INCLUDE "NARCDOG.TBL"
|
||
|
||
.TEXT
|
||
.GLOBAL ZCHK,XZCNTCK,SWAPAL0,CARCHK,BOZCHK
|
||
.GLOBAL doggry,blackd,dog
|
||
|
||
*
|
||
*PITBULL DISPATCHER
|
||
*
|
||
*DOGDISP:
|
||
* MOVI 9,A0
|
||
* MOVE A0,@DOGMAX,W ;MAX DOG COUNT
|
||
* CLR A0
|
||
* MOVE A0,@DOGCNT,W
|
||
* MOVI >0300,A0
|
||
* MOVE A0,@DOGSPD,W ;DOG SPEED
|
||
* CREATE 0,DOGDIS3
|
||
* RETS
|
||
*DOGDIS3:
|
||
* CLR A5
|
||
* MOVI >00450E10,A14
|
||
* CALLR DOGCOLD
|
||
* SLOOP 320,DOGDIS3 ;WAIT FOR THEM TO DIE
|
||
*
|
||
*DOG COLD START
|
||
*A5=Y:X COORD; IF ZERO THEN MAKE-UP COORDINATE
|
||
*A6=0:Z COORD
|
||
*A14= 0; FIX NUMBER:RANDOM NUMBER; 0E; ENEMY TYPE:ENEMY SUBTYPE (BYTE FIELDS)
|
||
*
|
||
DOGCOLD:
|
||
MOVE A14,A10 ;SAVE OID
|
||
SLL 28,A10
|
||
SRL 28,A10
|
||
MOVI >30,A0
|
||
MPYU A0,A10
|
||
ADDI DGTAB,A11 ;FORM TABLE REFERENCE BASE ADDR
|
||
|
||
MOVE A14,A10 ;SAVE OID
|
||
MOVE A14,A2
|
||
SLL 8,A2 ;GET FIXED COUNT
|
||
SRL 28,A2
|
||
MOVE A14,A0
|
||
SLL 12,A0 ;GET RANDOM COUNT
|
||
SRL 28,A0
|
||
JRZ DOGCLD0 ;BR = NO RANDOM GUYS
|
||
CALLA RANDU
|
||
ADD A0,A2
|
||
DOGCLD0:
|
||
|
||
*GET PACK STARTING POINT
|
||
MOVE A5,A9
|
||
JRNE DOGCLD1 ;ALREADY GOT A STARTING POINT
|
||
|
||
MOVE @WORLDTL,A9,W ;COME FROM EDGE OF SCREEN
|
||
SUBI 150,A9
|
||
CALLA RANDOM
|
||
JRN DOGCLD1
|
||
ADDI 680,A9 ;START HIM AT RIGHT SCREEN EDGE
|
||
DOGCLD1:
|
||
ZEXT A9 ;Y COORDINATE
|
||
MOVE @PLYMIN,B0,W
|
||
MOVE @PLYMAX,B1,W
|
||
CALLA RANGRAND
|
||
SUBI 38,A0 ;ADJUST FOR UL
|
||
SLL 16,A0
|
||
ADD A0,A9
|
||
|
||
CREATE DOGPID,DOG1X ;MAKE 'EM
|
||
DSJS A2,DOGCLD1
|
||
|
||
MOVE *A11,A11,L ;GET PALETTE
|
||
SLL 28,A10
|
||
SRL 28,A10
|
||
ADDI >DD0,A10 ;START A DOGEYE
|
||
MOVE A10,A1
|
||
MOVI DOGEYE,A7
|
||
CALLA GETPRC
|
||
RETS
|
||
*
|
||
*DOG TYPE TABLE
|
||
*
|
||
DGTAB
|
||
.LONG dog ;type zero
|
||
.WORD 4
|
||
|
||
.LONG doggry ;gray type
|
||
.WORD 3
|
||
|
||
.LONG blackd ;black type
|
||
.WORD 2
|
||
*
|
||
*DISPATCH YOUR DOGS
|
||
*A9=Y:X COORD
|
||
*A10=OID
|
||
DOG1X:
|
||
MOVE @DOGCNT,A0,W
|
||
MOVE @DOGMAX,A1,W
|
||
CMP A0,A1
|
||
JALE SUCIDE ;TOO MANY DOGS...
|
||
DOG2X
|
||
MOVI 30,A0
|
||
CALLA SRAND
|
||
ZEXT A0,W
|
||
ADDXY A0,A9 ;ADD IN X SPREAD
|
||
MOVE A9,A1
|
||
MOVI DOGINIT,A14 ;DOG ENEMY INIT
|
||
* A1 = Y:X INITIAL ENEMY POSITION
|
||
* A10 = OID
|
||
|
||
MMTM A12,A10,A11 ;GET BACK JIVE
|
||
CALLA ESINITUL ;CREATE DOG
|
||
JAEQ SUCIDE ;CREATE ERROR, EXIT
|
||
MMFM A12,A10,A11 ;GET BACK JIVE
|
||
MOVE A10,*A8(OID),W ;SAVE OBJECT ID
|
||
|
||
MOVE *A11+,A0,L ;DGTAB STUFF
|
||
CALLA SWAPAL0
|
||
MOVE *A11,A0,W
|
||
MOVE A0,*A13(ETEMP3),W ;SLEEPTIME
|
||
CLR A1
|
||
MOVE A1,*A13(ETEMP4),W ;CLEAR FLIP FLAG
|
||
|
||
MOVE @DOGCNT,A0,W
|
||
INC A0
|
||
MOVE A0,@DOGCNT,W ;INCREMENT THE GLOBAL DOG COUNT
|
||
|
||
CALLA GETCPLY
|
||
CALLA XZCHK ;GET INITIAL DIRECTION
|
||
CALLR DOGD0
|
||
|
||
MOVI DOGRUN,A9 ;GET ANIMATION SCRIPT
|
||
MOVK 6,A0
|
||
CALLA RANDU ;RANDOM STARTING POINT
|
||
MOVI 48,A1
|
||
MPYU A0,A1
|
||
ADD A1,A9
|
||
JRUC GPLAYR1
|
||
*
|
||
*DO SOME GROWLING
|
||
*
|
||
GRRRR0
|
||
CALLA PSTOP
|
||
MOVI DRAG,A9
|
||
CALLA RANDOM
|
||
MOVI DGRR1SND,A0 ;GROWL IT UP
|
||
JRN GRRRRL0
|
||
MOVI TUG,A9
|
||
MOVI DGBRKSND,A0 ;BARK IT UP
|
||
GRRRRL0
|
||
CALLA ONESND
|
||
GRRRRL
|
||
CLR A1
|
||
JSRP FRANIM
|
||
JRC GRRRR0
|
||
|
||
CALLA GETCPLY
|
||
CALLA FACEPLYR
|
||
|
||
MOVI 160,A0
|
||
CALLA RANDPER
|
||
JRNC GRRRRL
|
||
JRUC GPLAYR
|
||
*
|
||
*GET NEAREST PLAYER AND BITE HIM
|
||
*A8=DOG OBJECT
|
||
*
|
||
GPLAYR:
|
||
MOVI 15,A0
|
||
CALLA RANDPER
|
||
JRC GRRRR0
|
||
MOVI DOGRUN,A9 ;GET ANIMATION SCRIPT
|
||
GPLAYR1:
|
||
CMPI DOGRUNX,A9
|
||
JRHS GPLAYR ;INVALID ANIMATION, RESET...
|
||
MOVK 4,A1
|
||
JSRP FRANIM
|
||
JRC GPLAYR
|
||
|
||
MOVE *A13(ETEMP3),A0,W ;VARIABLE SLEEP TIME
|
||
CALLA PRCSLP
|
||
CALLR DOGSND
|
||
GPLAYR2
|
||
CALLA GETCPLY ;GET CLOSEST PLAYER
|
||
MOVE *A0(PFLAGS),A7,L
|
||
BTST BINVINC,A7 ;DUDE INVINCIBLE?
|
||
JREQ GPLAYR6 ;NO, GO FER IT!!
|
||
MOVE *A0(PENERGY+16),A1,W
|
||
CMPI IENERGY,A1
|
||
JRNE GPLAYR6 ;A PHONY INVINCIBLE
|
||
* BTST BBUYIN,A7
|
||
* JRNE GPLAYR6 ;BUYIN GO AFTER HIM ANYWAY
|
||
* BTST BDEAD,A7
|
||
* JRNE GPLAYR6
|
||
* BTST BDHOLD,A7 ;WOUNDED IGNORE IT
|
||
* JRNE GPLAYR6
|
||
MOVI P2DATA,A2 ;GET THE OTHER PLAYER
|
||
CMP A2,A0
|
||
JRNE GPLAYR3
|
||
MOVI P1DATA,A2
|
||
GPLAYR3
|
||
MOVE A2,A0
|
||
MOVE *A0(POBJ),A2,L ;GET EXPECTED PLAYERS OBJECT
|
||
JRZ GPLAYR4 ;INACTIVE... BAG IT
|
||
MOVE *A0(PFLAGS),A7,L
|
||
BTST BINVINC,A7 ;DUDE INVINCIBLE?
|
||
JREQ GPLAYR6 ;NO, GOFERIT!
|
||
MOVE *A0(PENERGY+16),A1,W
|
||
CMPI IENERGY,A1
|
||
JRNE GPLAYR6 ;A PHONY INVINCIBLE
|
||
GPLAYR4
|
||
CALLA ZCHK ;KEEP HIM IN BOUNDS
|
||
|
||
MOVE *A13(ETEMP4),A0,W ;ALREADY FLIPPED?
|
||
JRNE GPLAYR4A
|
||
|
||
MOVE *A8(OFLAGS),A4,W ;FLIP THE SUCKER
|
||
XORI M_FLIPH,A4
|
||
MOVE *A8(OIMG),A1,L ;GET THE CURRENT IMAGE POINTER
|
||
CALLA ANI ;SETUP THE "NEW" IMAGE
|
||
MOVK 1,A0
|
||
MOVE A0,*A13(ETEMP4),W ;SET FLIP FLAG
|
||
GPLAYR4A
|
||
MOVE @DOGSPD,A3,W ;X VELOCITY
|
||
|
||
MOVE *A13(ETEMP1),A4
|
||
ZEXT A4,W
|
||
MPYU A4,A3
|
||
SRL 8,A3 ;NORMALIZE IT
|
||
MOVE *A8(OFLAGS),A1,W
|
||
BTST B_FLIPH,A1
|
||
JRZ GPLAYR5
|
||
NEG A3
|
||
GPLAYR5
|
||
MOVE A3,*A8(OXVEL),L
|
||
JRUC GPLAYR1
|
||
|
||
GPLAYR6
|
||
CLR A1
|
||
MOVE A1,*A13(ETEMP4),W
|
||
MOVE *A0(POBJ),A0,L ;PLAYER OBJECT
|
||
MOVI 30,A5
|
||
MOVI 10,A6
|
||
BTST BDEAD,A7 ;PLAYER DOWN?
|
||
JREQ GPLYRL1 ;NOPE
|
||
|
||
MOVI 7,A6 ;
|
||
CLR A1 ;NO X OFFSET
|
||
MOVI 10,A3 ;Z IN FRONT
|
||
MOVI 45,A5
|
||
CALLA XZCNTCK ;CENTERED XZ CHECK
|
||
JRNC GPLYRL3 ;NOT CLOSE
|
||
CMPI 35,A3 ;DOG AT THE END OF DUDE'S BODY
|
||
JRLS DOGBITE ;NO
|
||
MOVI >90,A0 ;TRY A DRAG?
|
||
CALLA RANDPER
|
||
JRC DOGBITE ;ITS OUR LUCKY DAY
|
||
JRUC GPLYRL3
|
||
GPLYRL1:
|
||
CALLA XZCHK ;ARE WE IN POSITION?
|
||
GPLYRL2:
|
||
JRC DOGBITE ;HE'S WITHIN RANGE
|
||
GPLYRL3:
|
||
CALLA ZCHK ;KEEP HIM IN BOUNDS
|
||
MOVI 400,A0
|
||
CALLA RANDPER
|
||
JRNC GPLAYR1
|
||
CALLR DOGDIR ;NO GET DIRECTION
|
||
JRUC GPLAYR1
|
||
*TRY FOR A SOUND
|
||
DOGSND
|
||
MOVI 15,A0 ;MAKE A SOUND?
|
||
CALLA RANDPER
|
||
JRNC GPLYR20 ;NOPE.....
|
||
MOVI DGRR1SND,A0 ;GROWL IT UP
|
||
CALLA ONESND
|
||
GPLYR20
|
||
MOVI 60,A0 ;MAKE A SOUND?
|
||
CALLA RANDPER
|
||
JRNC GPLYR30 ;NOPE.....
|
||
MOVI DGBRKSND,A0 ;BARK IT UP
|
||
CALLA ONESND
|
||
GPLYR30
|
||
RETS
|
||
**************************************************************************
|
||
*DOG SOUNDS
|
||
* *
|
||
* CHANNEL #0 CVSD SOUNDS *
|
||
* CHANNEL #1 DAC A *
|
||
* CHANNEL #2 DAC B *
|
||
* CHANNEL #3 MUSIC *
|
||
* *
|
||
*SOUND DESCRIPTION= PRIORITY,TIME,SOUND CODE,(PRIORITY),(TIME),(SOUND CODE),0
|
||
*SOUND ENDS IN 0000.
|
||
*PRIORITY WORD = 1111IENNPPPPPPPP; I=1=NON-INTERRUPTABLE, E=1=NON-INT BY EQUAL
|
||
*NN=CHANNEL #(0-3);
|
||
*PP=PRIORITY (00-FF), FF=HIGHEST.
|
||
*TIME WORD =TTTT (0000-7FFF X 16MS).
|
||
*SOUND WORD =8SSS SSS=SOUND CODE(000-FFF).
|
||
*SOUND WORD =4SSS SSS=SOUND CODE (ZERO TIME SOUND CODE)
|
||
*DOG GROWL
|
||
DGRWLSND .WORD >F415,>20,>8050,0
|
||
*DOG GROWL
|
||
DGRR1SND .WORD >F415,>60,>8050,0
|
||
*DOG BARK
|
||
DGBRKSND .WORD >F415,>0C,>8051,0
|
||
*DOG WHIMPER
|
||
DGWMPSND .WORD >F416,>20,>8052,0
|
||
*DOG HITS THE GROUND
|
||
DGHTSND .WORD >F015,>08,>804E,0
|
||
*DOG BOUNCE SOUND
|
||
DGBCSND .WORD >F015,>04,>8053,0
|
||
*DOG HITS THE CAR
|
||
DGCARSND .WORD >F016,>A,>8044,>20,>8052,0
|
||
*
|
||
*DOGBITE
|
||
*LETS BITE THE DUDE
|
||
*A0=CLOSEST PLAYER DATA AREA
|
||
*A1=DELTA X
|
||
*A2=DELTA Z
|
||
*A3=ABS DX
|
||
*A4=ABS DZ
|
||
*A8=DOG OBJECT
|
||
*A13=DOG PROCESS
|
||
*
|
||
DOGBITE:
|
||
MOVI 250,A0
|
||
CALLA RANDPER
|
||
JRNC DGBT0
|
||
MOVI DGRR1SND,A0
|
||
JRUC DGBT1
|
||
DGBT0
|
||
MOVI DGRWLSND,A0 ;GROWL IT UP
|
||
DGBT1
|
||
CALLA ONESND
|
||
|
||
MOVE A1,A1 ;FLIP THE DUDE PROPERLY
|
||
JRN DOGBIT0
|
||
CALLA NOYFLP
|
||
JRUC DOGBIT1
|
||
DOGBIT0:
|
||
CALLA YFLP
|
||
DOGBIT1:
|
||
CALLA PSTOP ;STOP THE DUDE
|
||
|
||
*GET VELOCITY
|
||
*FLY, CHECK FOR BITE
|
||
*LAND
|
||
*CHECK FOR LIE DOWN
|
||
BTST BDEAD,A7 ;PLAYER DOWN?
|
||
JREQ DOGBIT2 ;NOPE
|
||
CMPI 35,A3 ;DOG AT THE END OF DUDE'S BODY
|
||
JRHS DOGDRG ;NO
|
||
DGBT2
|
||
MOVI 7,A0
|
||
CALLA RANDU
|
||
SLL 5,A0
|
||
ADDI LOWBTAB,A0
|
||
MOVE *A0,A9,L
|
||
JRUC BITSHT2
|
||
*LOW ATTACK TABLE
|
||
LOWBTAB
|
||
.LONG GRR1,GRR2,TEAR1,TEAR2,TUG,DRAG,TUG,GRR2
|
||
*DRAG HIM AWAY
|
||
DOGDRG:
|
||
CALLA GETCPLY ;SAVE PLAYER STUFF
|
||
MOVE A0,A10
|
||
DOGDRG0
|
||
MOVI DRAG,A9 ;DRAG ANIMATION
|
||
DOGDRGL
|
||
MOVK 4,A1
|
||
JSRP FRANIM
|
||
MOVE A0,A11 ;SAVE SLEEP TIME
|
||
JRC DOGDRG0
|
||
DOGDRG1
|
||
MOVE *A10(PFLAGS),A7,L
|
||
BTST BDEAD,A7 ;PLAYER STILL DOWN?
|
||
JREQ GPLAYR ;NOPE
|
||
MOVI 16,A0
|
||
CALLA RANDPER ;QUIT DRAGGING ?
|
||
JRC GPLAYR ;YIP, ITS GETTING OLD
|
||
MOVE *A10(POBJ),A0,L ;PLAYER OBJECT
|
||
CLR A1 ;NO X OFFSET
|
||
MOVI 10,A3 ;Z IN FRONT
|
||
CALLA XZCNTCK ;STILL IN RANGE
|
||
CMPI 45,A3
|
||
JRHS GPLAYR
|
||
PUSH A0
|
||
MOVI >18000,A0 ;GET RANDOM DRAG FACTOR
|
||
CALLA RANDU
|
||
ADDI >8000,A0
|
||
MOVE A0,A3
|
||
PULL A0
|
||
MOVE A1,A1
|
||
JRN DOGDRG2
|
||
NEG A3
|
||
DOGDRG2
|
||
MOVE *A0(OXVAL),A2,L
|
||
ADD A3,A2
|
||
MOVE A2,*A0(OXVAL),L
|
||
MOVE *A0(OSHAD),A4,L ;DRAG HIS STUPID SHADOW
|
||
JREQ DOGDRG3 ;NO SHADOW...
|
||
MOVE A2,*A4(OXVAL),L
|
||
DOGDRG3
|
||
MOVE *A10(PLOBJ),A0,L ;GET OTHER HALF
|
||
MOVE *A0(OXVAL),A2,L
|
||
ADD A3,A2
|
||
MOVE A2,*A0(OXVAL),L
|
||
MOVE *A8(OXVAL),A2,L
|
||
ADD A3,A2
|
||
MOVE A2,*A8(OXVAL),L
|
||
SLEEP 1
|
||
DSJ A11,DOGDRG1
|
||
JRUC DOGDRGL
|
||
|
||
DOGBIT2:
|
||
*CHECK FOR A JUMP SHOT
|
||
BTST BJUMP2,A7 ;IN AIR ?
|
||
JREQ DOGBIT3 ;NO
|
||
MOVI 200,A0
|
||
CALLA RANDPER ;JUMPER?
|
||
JRC DOGJMP ;NOPE
|
||
|
||
*SHORT JUMP
|
||
*GET TAKEOFF FRAMES
|
||
DOGBIT3
|
||
MOVI QKLEAP,A9 ;WERE IN BACK DO SIDE ATTACK
|
||
MOVE A2,A2 ;TEST DELTA Z
|
||
JRNN BITSHT0
|
||
CALLA SHADST ;START A SHADOW FOR UNSHADOWED FRAMES
|
||
MOVI QKATTACK,A9
|
||
BITSHT0
|
||
MOVK 1,A1
|
||
JSRP FRANIM ;DO YOUR TAKEOFF
|
||
MOVI >30000,A0
|
||
CALLA RANDU
|
||
MOVE *A8(OFLAGS),A1,W
|
||
BTST B_FLIPH,A0
|
||
JRZ BITSHT1
|
||
NEG A0
|
||
BITSHT1
|
||
MOVE A0,*A8(OXVEL),L
|
||
BITSHT2:
|
||
CALLA GETCPLY
|
||
MOVE *A0(PFLAGS),A7,L
|
||
BTST BJUMP2,A7 ;IN AIR ?
|
||
JREQ BITSHT3
|
||
BTST BDEAD,A7 ;PLAYER DOWN?
|
||
JRNE BITSHT3 ;YES
|
||
MOVE A0,A10 ;SAVE PLAYER DATA PTR
|
||
MOVE *A0(PLOBJ),A0,L ;PLAYER OBJECT LEGS
|
||
MOVE *A0(OYPOS),A2,W
|
||
MOVE *A0(OSIZEY),A1,W
|
||
ADD A1,A2
|
||
MOVE *A8(OYPOS),A1,W
|
||
ADDI 8,A1 ;FUDGE FACTOR
|
||
CMP A1,A2 ;ARE WE HIGH ENOUGH TO BITE
|
||
JRLS BITSHT3X ;NO...
|
||
MOVI 35,A5
|
||
MOVI 10,A6
|
||
CALLA XZCHK ;ARE WE IN XZ POSITION?
|
||
JRNC BITSHT3X ;NOPE...
|
||
MOVE A10,A0
|
||
BITSHT3
|
||
MOVE @WAVE,A1,W
|
||
CMPI 1,A1 ;WAVE 1?
|
||
JRNE BITSHT3A ;NO
|
||
CALLA BOZCHK
|
||
JRNC BITSHT3A ;NO BOZO TARGET
|
||
MOVE A0,A10
|
||
MOVI 200,A0
|
||
CALLA RANDPER
|
||
JRNC BITSHT3X ;BITE SOME OF THE TIME
|
||
MOVE A10,A0
|
||
BITSHT3A
|
||
MOVE A0,A2
|
||
CALLA KNIFEHIT
|
||
CALLR DGBLOOD ;MAKE DOG BITE BLEED
|
||
BITSHT3X:
|
||
MOVE A8,A0 ;GET RID OF SHADOW FOLKS
|
||
CALLA DELSHAD
|
||
MOVK 1,A1 ;DO YOUR LANDING FRAMES
|
||
JSRP FRANIM
|
||
JRUC GPLAYR ;START OVER AGAIN
|
||
|
||
*DOG JUMP SHOT AT PLAYER
|
||
DOGJMP:
|
||
MOVI FATTACK,A9
|
||
MOVE A2,A2 ;TEST DELTA Z
|
||
JRN DOGJMP0
|
||
MOVI LEAP,A9 ;WERE IN BACK DO SIDE ATTACK
|
||
DOGJMP0
|
||
MOVK 1,A1
|
||
JSRP FRANIM ;DO YOUR TAKEOFF
|
||
MOVE A9,*A13(ETEMP2),L ;SAVE RESTART POINT
|
||
CALLA GETCPLY
|
||
MOVE A0,A11 ;SAVE DUDES POINTER
|
||
MOVE *A0(POBJ),A0,L ;PLAYER OBJECT
|
||
CALLA XZCHK
|
||
MOVE *A0(OXVEL),A5,L ;GET PLAYER VELOCITY
|
||
MOVE *A0(OZVEL),A6,L
|
||
SLL 11,A1 ;ADJUST X VELOCITY
|
||
SLL 11,A2 ;GET ZVEL
|
||
MOVI 500,A0
|
||
CALLA RANDPER
|
||
JRNC DOGJMP1
|
||
ADD A5,A1 ;ADD PLAYER VELOCITY
|
||
ADD A6,A2
|
||
DOGJMP1:
|
||
MOVI >30000,A0 ;GET Y VELOCITY
|
||
CALLA RANDU
|
||
ADDI >FFFA0000,A0
|
||
|
||
MOVE A1,*A8(OXVEL),L
|
||
MOVE A2,*A8(OZVEL),L
|
||
ADD A2,A0
|
||
MOVE A0,*A8(OYVEL),L
|
||
CALLA SHADST
|
||
CALLA SHVELCPY
|
||
CLR A10 ;BITE FLAG
|
||
MOVE A1,A1 ;FLIP THE DUDE PROPERLY
|
||
JRN DOGJMP2
|
||
CALLA NOYFLP
|
||
JRUC JUMP1
|
||
DOGJMP2:
|
||
CALLA YFLP
|
||
JUMP1:
|
||
MOVE *A13(ETEMP2),A9,L ;GET RESTART POINT
|
||
JUMPL:
|
||
MOVK 4,A1
|
||
JSRP FRANIM
|
||
JRC JUMP1
|
||
SLEEP 3
|
||
MOVE A10,A10
|
||
JREQ JUMP2 ;ALEADY BEEN BITTEN
|
||
|
||
*CHECK FOR BITE
|
||
MOVE *A11(PLOBJ),A0,L ;PLAYER OBJECT LEGS
|
||
MOVI 8,A4 ;Y OFFSET
|
||
MOVI 20,A5 ;XRANGE
|
||
MOVI 10,A6
|
||
CALLA XYZCK ;ARE WE IN POSITION
|
||
JRC JMPBIT ;BITE THE DUDE
|
||
|
||
MOVE *A11(POBJ),A0,L ;PLAYER OBJECT
|
||
MOVI 8,A4 ;Y OFFSET
|
||
MOVI 20,A5 ;XRANGE
|
||
MOVI 10,A6
|
||
CALLA XYZCK ;ARE WE IN POSITION
|
||
JRNC JUMP2
|
||
JMPBIT
|
||
INC A10
|
||
MOVE A11,A2 ;GIVE PLAYER KNIFE HIT
|
||
CALLA KNIFEHIT
|
||
MOVE A11,A0
|
||
CALLR DGBLOOD ;MAKE DOG BITE BLEED
|
||
JUMP2
|
||
CALLA ZCHK ;MAKE SURE Z IN BOUNDS
|
||
MOVE *A8(OYVEL),A0,L ;EFFECT OF GRAVITY
|
||
ADDI >0B000,A0,L
|
||
MOVE A0,*A8(OYVEL),L
|
||
MOVE *A8(OZVEL),A1,L ;REMOVE Z COMPONENT
|
||
SUB A1,A0
|
||
JRN JUMPL ;UPWARD VEL, NO LAND
|
||
CALLA DFRMGRND
|
||
CMPI 10,A1
|
||
JRGT JUMPL ;IN THE AIR STILL
|
||
|
||
*LANDING ANIMATION
|
||
CALLR FNANI ;FIND NEXT ANIMATION
|
||
CALLA PSTOP ;STOP THE SUCKER
|
||
MOVE A8,A0 ;OBJECT IN A0 FOR SETZPOS
|
||
CALLA SETZPOS ;ADJUST THE MUTHA
|
||
CALLA DELSHAD ;RESET YOUR SHADOW
|
||
* CALLA SHADST
|
||
MOVK 1,A1 ;DO YOUR LANDING FRAMES
|
||
JSRP FRANIM
|
||
JRUC GPLAYR ;START OVER AGAIN
|
||
*
|
||
*FIND NEXT ANIMATION
|
||
*A9=SCRIPT, RETURNED WITH NEXT ANIMATION
|
||
*
|
||
FNANI:
|
||
PUSH A0
|
||
FNANIL
|
||
MOVE *A9+,A0,L
|
||
JREQ FNANIX
|
||
ADDK 16,A9
|
||
JRUC FNANIL
|
||
FNANIX
|
||
PULL A0
|
||
RETS
|
||
*
|
||
*CHECK X Y Z
|
||
*A0=OBJECT SEEKED
|
||
*A4=Y OFFSET
|
||
*A5=XRANGE
|
||
*A6=ZRANGE
|
||
*RETURNS CARRY IF IN RANGE
|
||
*A1,A2,A3,A4 AS XZCHK
|
||
XYZCK:
|
||
MOVE *A0(OFLAGS),A2,W
|
||
SLL 28,A2
|
||
JREQ XYZFL ;OBJECT NOT ACTIVE
|
||
MOVE *A0(OYPOS),A2,W
|
||
MOVE *A0(OSIZEY),A1,W
|
||
ADD A2,A1
|
||
MOVE *A8(OYPOS),A3,W
|
||
ADD A4,A3 ;FUDGE FACTOR
|
||
CMP A3,A1 ;ARE WE IN Y RANGE ?
|
||
JRHS XYZFL ;OUT OF RANGE
|
||
CMP A3,A2
|
||
JRLS XYZFL
|
||
CALLA XZCHK ;ARE WE IN POSITION
|
||
RETS
|
||
XYZFL
|
||
CLRC
|
||
RETS
|
||
*
|
||
*DOG BLOOD START
|
||
*A8=DOG, A0=PLAYER DATA
|
||
*
|
||
DGBLOOD:
|
||
MMTM SP,A8,A9,A11
|
||
MOVE *A8(OID),A11,W
|
||
MOVE *A8(OYPOS),A9,W
|
||
ADDI 5,A9 ;ADJUST FOR KNIFE POSITION
|
||
MOVE *A0(PFLAGS),A7,L
|
||
BTST BDEAD,A7 ;PLAYER DOWN?
|
||
JREQ DGBLD00
|
||
MOVI >007A000C,A9 ;Y:X OFFSET
|
||
CREATE 0EDH,SPLATS
|
||
JRUC DGBLD1
|
||
DGBLD00
|
||
BTST BSWALK,A7
|
||
JREQ DGBLD0
|
||
ADDI 15,A9 ;LOWER BLOOD FOR SQUAT WALK
|
||
DGBLD0:
|
||
MOVE *A0(POBJ),A8,L
|
||
CREATE 0EDH,SPLATBOX
|
||
DGBLD1
|
||
MMFM SP,A8,A9,A11
|
||
RETS
|
||
*
|
||
*BLINK DOG EYE
|
||
*A11=PALETTE
|
||
*A10=PID
|
||
DOGEYE:
|
||
SLEEP 1
|
||
MOVE A10,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA EXISTP
|
||
JRNE DEDIE ;ALREADY EXISTS
|
||
|
||
SLL 28,A10
|
||
SRL 22,A10
|
||
ADDI ICOLTAB,A10
|
||
DOG0LP
|
||
MOVE A10,A9
|
||
DOGILP:
|
||
MOVE @DOGCNT,A0
|
||
JREQ DEDIE
|
||
|
||
MOVE A11,A0
|
||
CALLA FINDPAL
|
||
JREQ DEDIE
|
||
|
||
MOVE A0,A8 ;KEEP PALETTE POSITION
|
||
SLL 24,A8
|
||
SRL 16,A8
|
||
ADDI 241,A8 ;ADD IN EYE COLOR VALUE
|
||
MOVE A8,A1
|
||
|
||
MOVK 1,A2
|
||
MOVE A9,A0
|
||
CALLA PALSET
|
||
SLEEP 5
|
||
ADDK 16,A9
|
||
MOVE *A9,A0,W
|
||
JREQ DOG0LP
|
||
JRUC DOGILP
|
||
DEDIE JAUC SUCIDE
|
||
*
|
||
* R G B
|
||
*DOG EYE COLOR TABLE
|
||
*0=END
|
||
ICOLTAB
|
||
.WORD 1 ;BLACK
|
||
.word (31*32*32)+(0 *32)+( 0 ) ;RED
|
||
.word (31*32*32)+(31*32)+( 31 ) ;WHITE
|
||
.WORD 0
|
||
*GREY GUY WITH RED/GOLD
|
||
.word (31*32*32)+(0 *32)+( 0 )
|
||
.word (31*32*32)+(31*32)+( 0)
|
||
.word (31*32*32)+(0 *32)+( 0 )
|
||
.WORD 0
|
||
*BLACK GUY WITH BLUE GLOWERS
|
||
.word (31*32*32)+(31*32)+( 31 ) ;WHITE
|
||
.word (0*32*32)+(0 *32)+( 20 )
|
||
.word (0*32*32)+(0 *32)+( 31 )
|
||
.WORD 0
|
||
ICOLTEND
|
||
*
|
||
*GET DIRECTION FOR DOG
|
||
*A1=DELTA X
|
||
*A2=DELTA Z
|
||
*A3=ABS DX
|
||
*A4=ABS DZ
|
||
*A8=OBJECT
|
||
*A13=PROCESS
|
||
DOGDIR:
|
||
MOVI 200,A0
|
||
CALLA RANDPER
|
||
JRNC DOGD1
|
||
DOGD0
|
||
MOVI >4000,A0 ;GET RANDOM VELOCITY FACTOR
|
||
CALLA RANDU
|
||
ADDI >BFFF,A0
|
||
MOVE A0,*A13(ETEMP1),W
|
||
DOGD1
|
||
MOVE A3,A14 ;SAVE ABS DX
|
||
MOVE @DOGSPD,A3,W ;X VELOCITY
|
||
|
||
MOVE *A13(ETEMP1),A4
|
||
ZEXT A4,W
|
||
MPYU A4,A3
|
||
SRL 8,A3 ;NORMALIZE IT
|
||
MOVE A3,A4
|
||
MOVE *A8(OID),A0,W ;INCREASE VELOCITY FOR SUBTYPES
|
||
SLL 28,A0
|
||
SRL 28,A0 ;MASK THE STUFF OUT
|
||
JREQ DOGD2
|
||
SRL 1,A4
|
||
DEC A0
|
||
JRNE DOGD10
|
||
SRL 1,A4
|
||
DOGD10
|
||
ADD A4,A3
|
||
DOGD2
|
||
MOVE A3,A4
|
||
SRL 1,A4 ;Z VELOCITY
|
||
ABS A1 ;NEGATE FOR NEGATIVE X
|
||
JRN DOGDIR1
|
||
NEG A3
|
||
DOGDIR1:
|
||
ABS A2 ;NEGATE FOR NEGATIVE Z
|
||
JRN DOGDIR2
|
||
NEG A4
|
||
DOGDIR2:
|
||
CMPI 4,A2 ;CLEAR ZVEL IF REAL CLOSE
|
||
JRHI DOGDIR4
|
||
CLR A4
|
||
DOGDIR4:
|
||
MOVE *A8(OZPOS),A2,W ;IF OFF SCREEN, COME ON BACK
|
||
MOVE @PLZMIN,A1,W
|
||
CMP A1,A2
|
||
JRGE DOGDIR44
|
||
MOVI >1000,A4
|
||
DOGDIR44:
|
||
MOVE A4,*A8(OYVEL),L
|
||
MOVE A4,*A8(OZVEL),L
|
||
CMPI 30,A14 ;DONT CHANGE XVEL IF CLOSE (ANTI STAIRSTEP)
|
||
JRHS DOGDIR5
|
||
MOVE *A8(OXVEL),A14,L
|
||
JREQ DOGDIR5
|
||
MOVE A14,A3
|
||
DOGDIR5:
|
||
MOVE A3,*A8(OXVEL),L ;STORE VELOCITY
|
||
JAUC SHVELFLP
|
||
*
|
||
*EXPLOSION VELOCITY
|
||
*A8=OBJECT, A6=SHIT THAT HIT YOU
|
||
*
|
||
EXPVEL:
|
||
CALLA PSTOP ;BLOW DUDE INTO THE AIR
|
||
MOVI >50000,A0 ;GET RANDOM Y VELOCITY
|
||
CALLA RANDU
|
||
ADDI >1C000,A0
|
||
MOVE A0,A3
|
||
NEG A3
|
||
MOVI >30000,A0 ;GET RANDOM X VELOCITY
|
||
CALLA RANDU
|
||
ADDI >C000,A0 ;ADD IN BIAS
|
||
MOVE *A6(OXVEL+>10),A14 ;GET ROCKET VELOCITY
|
||
JREQ CLNEX1
|
||
JRNN CLNEX2
|
||
NEG A0
|
||
JRUC CLNEX2
|
||
CLNEX1: ;ZERO VELOCITY CASE, (EXPLOSION)
|
||
SUBI >18000,A0 ;REMOVE BIAS
|
||
CALLA GETCPNT
|
||
SWAP A6,A8
|
||
MOVE A1,A2 ;A2=CLOWN CENTER
|
||
CALLA GETCPNT
|
||
SWAP A6,A8 ;A1=EXPLOSION CENTER
|
||
SUBXY A1,A2
|
||
JRXNN CLNEX2
|
||
NEG A0
|
||
CLNEX2:
|
||
MOVE A0,*A8(OXVEL),L
|
||
MOVI >6000,A0 ;GET RANDOM Z VELOCITY
|
||
CALLA SRAND
|
||
MOVE A0,*A8(OZVEL),L
|
||
ADD A0,A3
|
||
MOVE A3,*A8(OYVEL),L
|
||
CALLA SHVELCPY
|
||
CLNEXP0:
|
||
RETS
|
||
*
|
||
*ROCKET, EXPLOSION KILL
|
||
*A0 = PTR TO DOG OBJECT
|
||
*A8 = PTR TO OBJECT THAT SMASHED HIM
|
||
*
|
||
DOGCOL0
|
||
MOVE *A8(OID),A11,W ;GET ENEMY ID FOR POINTS
|
||
MOVE A8,A6
|
||
MOVE A0,A8
|
||
CALLA SCRKIL
|
||
CALLR EXPVEL
|
||
|
||
MOVI DUMCOLL,A0
|
||
MOVE A0,*A8(OCVECT),L ;COLLISION POINTER NULL FOR NOW
|
||
|
||
MOVE *A8(OPLINK),A0,L
|
||
MOVI 0EDh,A1
|
||
MOVI CHIFLY,A7
|
||
CALLA XFERPROC ;CREATE A CHIHUAHUA FLYER
|
||
DOGCOLX
|
||
CLRC ;TELL COLLISION SCANNER NOT TO DELETE
|
||
RETS
|
||
*
|
||
*FLY CHIHUAHUA FLY
|
||
*
|
||
CHIFLY:
|
||
MOVE A8,A0 ;DONT CREATE 2 SHADOWS
|
||
CALLA DELSHAD
|
||
CALLA SHADST
|
||
CALLA SHVELCPY
|
||
CHIFLY00:
|
||
MOVI CHIBLO,A9 ;FLIP HIM OVER
|
||
MOVK 4,A1
|
||
JSRP FRANIM
|
||
MOVE *A8(OYPOS),A10,W
|
||
MOVE @CHIBLO,A1,L
|
||
MOVE *A8(OFLAGS),A4,L
|
||
XORI M_FLIPV,A4
|
||
CALLA RANDOM
|
||
ANDI M_FLIPH,A0 ;RANDOM HFLIP
|
||
XOR A0,A4
|
||
CALLA ANI
|
||
MOVE A10,*A8(OYPOS),W ;RESET YOUR Y COORD FOR IN PLACE FLIP
|
||
CHIFLY0:
|
||
MOVI CHIBLO,A9 ;DO YOUR BLO UP ANIMATION
|
||
* CLR A10
|
||
CHIFLYL:
|
||
* DEC A10
|
||
* JRNN CHIFLY1
|
||
* MOVK 1,A10
|
||
MOVK 4,A1
|
||
JSRP FRANIM
|
||
JRC CHIFLY0
|
||
CHIFLY1
|
||
CALLA ZCHK
|
||
SLEEP 3
|
||
MOVE *A8(OYVEL),A0,L ;EFFECT OF GRAVITY
|
||
ADDI >5000,A0
|
||
MOVE A0,*A8(OYVEL),L
|
||
MOVE *A8(OZVEL),A1,L ;SUBTRACT OUT Z COMPONENT
|
||
SUB A1,A0
|
||
JRN CHIFLYL ;CANT LAND WITH NEGATIVE Y VEL.
|
||
CALLA DFRMGRND
|
||
JRNN CHIFLYL ;STILL GOING
|
||
|
||
CMPI >1A000,A0
|
||
JRLS DOGLAND
|
||
SRA 1,A0 ;BOUNCE VELOCITY
|
||
NEG A0
|
||
MOVE *A8(OZVEL),A1,L ;CUT DOWN Z
|
||
SRA 1,A1
|
||
MOVE A1,*A8(OZVEL),L
|
||
ADD A1,A0
|
||
MOVE A0,*A8(OYVEL),L ;CUT DOWN Y
|
||
MOVE *A8(OXVEL),A0,L ;CUT DOWN X
|
||
SRA 1,A0
|
||
MOVE A0,*A8(OXVEL),L
|
||
CALLA SHVELCPY
|
||
|
||
MOVI DGBCSND,A0 ;MAKE DOG BOUNCE SOUND
|
||
CALLA ONESND
|
||
JRUC CHIFLY00
|
||
|
||
DOGLAND:
|
||
MOVI DGHTSND,A0 ;MAKE DOG HIT SOUND
|
||
CALLA ONESND
|
||
CALLA PSTOP ;STOP THE SUCKER
|
||
MOVE A8,A0 ;OBJECT IN A0 FOR SETZPOS
|
||
CALLA SETZPOS ;ADJUST THE MUTHA
|
||
DECW @DOGCNT ;CUT DOWN DOGGIES
|
||
MOVI [1,1],A9
|
||
CREATE 0DFh,ESINK ;CREATE THE DEADMAN SINK
|
||
JAUC SUCIDE ;DIE
|
||
*
|
||
*DOG HIT BY A CAR
|
||
*A0 = PTR TO DOG OBJECT
|
||
*A8 = PTR TO OBJECT THAT SMASHED HIM
|
||
*
|
||
DOGCAR:
|
||
CALLA CARCHK
|
||
JRNC DOGCOLX
|
||
PUSH A0
|
||
MOVI DGCARSND,A0 ;FAST CAR DO IT
|
||
CALLA ONESND
|
||
PULL A0
|
||
JRUC DOGCOL0
|
||
*
|
||
*DOG BULLET COLLISION ROUTINE
|
||
*A0 = PTR TO DOG OBJECT
|
||
*A8 = PTR TO OBJECT THAT SMASHED HIM
|
||
DOGBUL
|
||
MOVE *A8(OID),A11,W ;GET ENEMY ID FOR POINTS
|
||
MOVE A8,A10 ;SAVE BULLET
|
||
MOVE A0,A8 ;PASS WASTED GUYS POINTER
|
||
CALLA SCRKIL
|
||
MOVI DUMCOLL,A14
|
||
MOVE A14,*A0(OCVECT),L ;COLLISION POINTER NULL FOR NOW
|
||
|
||
CALLA DFRMGRND ;IS HE IN THE AIR?
|
||
CMPI 4,A1
|
||
JRLT DOGBUL1
|
||
MOVI 4,A2
|
||
MOVE *A8(OXVEL+>10),A0,W ;GIVE HIM A SHOVE
|
||
MOVE *A10(OXVEL),A1
|
||
JRNN DOGBUL0
|
||
NEG A2
|
||
DOGBUL0:
|
||
ADD A2,A0
|
||
MOVE A0,*A8(OXVEL+>10),W
|
||
MOVI CHIFLY,A7
|
||
JRUC DOGBUL2
|
||
DOGBUL1:
|
||
MOVI CHICHI,A7
|
||
DOGBUL2:
|
||
MOVE *A8(OPLINK),A0,L
|
||
MOVI 0EDh,A1
|
||
CALLA XFERPROC ;CREATE A CHIHUAHUA
|
||
CLRC ;TELL COLLISION SCANNER NOT TO DELETE
|
||
RETS
|
||
*
|
||
*CHIHUAHUA RUN OFF SCREEN
|
||
*A8=OBJECT
|
||
CHICHI:
|
||
CALLA PSTOP
|
||
MOVE A8,A0 ;DONT CREATE 2 SHADOWS
|
||
CALLA DELSHAD
|
||
CALLA SHADST
|
||
MOVI DGWMPSND,A0
|
||
CALLA ONESND
|
||
MOVI 3,A1 ;FLIP HIM AROUND AND SCAMPER AWAY
|
||
CALLA GETCPLY ;GET CLOSEST PLAYER
|
||
MOVE *A0(POBJ),A0,L ;PLAYER OBJECT
|
||
CALLA XZCHK
|
||
MOVI >20000,A0
|
||
CALLA RANDU
|
||
ADDI >20000,A0
|
||
MOVE A1,A1
|
||
JRN CHICHI0
|
||
NEG A0
|
||
CALLA YFLP
|
||
JRUC CHICHI2
|
||
CHICHI0
|
||
CALLA NOYFLP
|
||
CHICHI2
|
||
MOVE A0,*A8(OXVEL),L
|
||
CALLA SHVELCPY
|
||
CHILP
|
||
MOVI LILDOG,A9
|
||
MOVI 1,A1
|
||
JSRP FRANIM
|
||
|
||
MOVE @WORLDTL,A0,W ;CHECK FOR FAR OFF SCREEN
|
||
ADDI 256,A0 ;NORMALIZE FOR SCREEN CENTER
|
||
MOVE *A8(OXPOS),A1,W
|
||
SUB A0,A1
|
||
ABS A1
|
||
CMPI 300,A1
|
||
JRLS CHILP ;NOT GONE YET
|
||
|
||
MOVE @DOGCNT,A0,W
|
||
DEC A0
|
||
MOVE A0,@DOGCNT,W
|
||
|
||
MOVE A8,A0 ;GET OBJECT DESCRIPTOR
|
||
CALLA DELENEMY ;DELETE OBJECT AND QUIT
|
||
JAUC SUCIDE
|
||
*
|
||
*STFOBJ INITIALIZING DATA
|
||
* .LONG OXVEL,OYVEL,OXVAL,OYVAL
|
||
* .WORD OZPOS,OZVEL
|
||
* .LONG OIMG,OZSIZ,OCVECT
|
||
* .WORD OFLAGS,OID
|
||
DOGINIT
|
||
.LONG 0,0,0,0
|
||
.WORD 0,0
|
||
.LONG dog3,LOFZ,DOGCOLL
|
||
.WORD DMAWNZ,DOGOID
|
||
.LONG DOGBLIP
|
||
|
||
*COLLISION TABLE
|
||
DOGCOLL
|
||
.WORD B1OID|BULLETID
|
||
.LONG DOGBUL
|
||
.WORD B1OID|EXPLODID
|
||
.LONG DOGCOL0
|
||
.WORD B1OID|ROCKETID
|
||
.LONG DOGCOL0
|
||
.WORD B2OID|BULLETID
|
||
.LONG DOGBUL
|
||
.WORD B2OID|EXPLODID
|
||
.LONG DOGCOL0
|
||
.WORD B2OID|ROCKETID
|
||
.LONG DOGCOL0
|
||
.WORD BEOID|EXPLODID
|
||
.LONG DOGCOL0
|
||
.WORD TRAN1OID+CBODYID
|
||
.LONG DOGCAR
|
||
.WORD TRAN2OID+CBODYID
|
||
.LONG DOGCAR
|
||
.WORD TRAN2OID+WSHLDID
|
||
.LONG DOGCAR
|
||
.WORD C1OID+CBODYID
|
||
.LONG DOGCAR
|
||
.WORD 0
|
||
.LONG DUMRTSG
|
||
|
||
*DDUMCL0 ;DOG DUMCOLL
|
||
* .WORD 0
|
||
* .LONG DUMRTSG
|
||
*DDUMCL1
|
||
* .WORD 0
|
||
* .LONG DUMRTSG
|
||
|
||
|
||
*LOFFREDO FRAME TABLES
|
||
*NORMAL TABLE ENTRY:
|
||
* .LONG FRAME1
|
||
* .WORD SLEEPT,FLIP_FACTOR
|
||
* .LONG FRAME2
|
||
* .
|
||
* .
|
||
* .
|
||
*SPECIAL ENTRY(FOR STORED OFFSETS AND PROCESSES)
|
||
* .LONG FRAME1
|
||
* .WORD -SLEEPT,XOFF,YOFF,PROC. ID
|
||
* .LONG PROCESS STARTING ADDRESS
|
||
* .WORD FLIP_FACTOR
|
||
* .LONG FRAME2
|
||
*
|
||
*DOG RUN
|
||
*
|
||
DOGRUN:
|
||
.LONG dog3
|
||
.WORD 4
|
||
.LONG dog4
|
||
.WORD 4
|
||
.LONG dog1
|
||
.WORD 4
|
||
.LONG leap1
|
||
.WORD 4
|
||
.LONG leap2
|
||
.WORD 4
|
||
.LONG dog2
|
||
.WORD 4
|
||
.LONG 0
|
||
DOGRUNX:
|
||
*
|
||
*ATTACKING SEQUENCES
|
||
*
|
||
*QUICK FRONTAL ATTACK
|
||
*
|
||
QKATTACK:
|
||
.LONG atack1
|
||
.WORD 6
|
||
.LONG atack2
|
||
.WORD 6
|
||
.LONG atack3
|
||
.WORD 9
|
||
.LONG 0
|
||
.LONG atack2
|
||
.WORD 6
|
||
.LONG atack1
|
||
.WORD 6
|
||
.LONG 0
|
||
*
|
||
*DOG QUICK LEAP (SIDE BITE)
|
||
*
|
||
QKLEAP:
|
||
.LONG leap1
|
||
.WORD 4
|
||
.LONG leap2
|
||
.WORD 4
|
||
.LONG leap3
|
||
.WORD 8
|
||
.LONG 0
|
||
.LONG leap2
|
||
.WORD 6
|
||
.LONG leap1
|
||
.WORD 6
|
||
.LONG 0
|
||
*
|
||
*LEAP (LUNGE AT PLAYER)
|
||
*
|
||
LEAP:
|
||
*TAKEOFF
|
||
.LONG leap1
|
||
.WORD 3
|
||
.LONG leap2
|
||
.WORD 3
|
||
.LONG leap3
|
||
.WORD 3
|
||
.LONG 0
|
||
*IN AIR
|
||
.LONG atack12
|
||
.WORD 3
|
||
.LONG atack12
|
||
.WORD 3
|
||
.LONG atack13
|
||
.WORD 3
|
||
.LONG atack13
|
||
.WORD 3
|
||
.LONG atack14
|
||
.WORD 3
|
||
.LONG atack14
|
||
.WORD 3
|
||
.LONG 0
|
||
*LANDING
|
||
.LONG leap3
|
||
.WORD 5
|
||
.LONG leap1
|
||
.WORD 5
|
||
.LONG 0
|
||
*
|
||
*FRONTAL LEAP ATTACK
|
||
*
|
||
FATTACK:
|
||
.LONG atack1
|
||
.WORD 3
|
||
.LONG atack2
|
||
.WORD 3
|
||
.LONG 0
|
||
*IN AIR
|
||
.LONG atack3
|
||
.WORD 3
|
||
.LONG atack4
|
||
.WORD 3
|
||
.LONG atack10
|
||
.WORD 3
|
||
.LONG atack5
|
||
.WORD 3
|
||
.LONG atack6
|
||
.WORD 3
|
||
.LONG atack7
|
||
.WORD 3
|
||
.LONG atack8
|
||
.WORD 3
|
||
.LONG atack4
|
||
.WORD 3
|
||
.LONG atack5
|
||
.WORD 3
|
||
.LONG atack6
|
||
.WORD 3
|
||
.LONG atack5
|
||
.WORD 3
|
||
.LONG atack3
|
||
.WORD 3
|
||
.LONG 0
|
||
*LAND
|
||
.LONG atack2
|
||
.WORD 3
|
||
.LONG atack1
|
||
.WORD 3
|
||
.LONG 0
|
||
*
|
||
*TUG
|
||
*
|
||
TUG:
|
||
.LONG drag2
|
||
.WORD 6
|
||
.LONG drag3
|
||
.WORD 6
|
||
.LONG drag1
|
||
.WORD 6
|
||
.LONG drag4
|
||
.WORD 6
|
||
.LONG 0
|
||
*
|
||
*GRRR ...LOW ATTACK
|
||
*
|
||
GRR1:
|
||
.LONG leap1
|
||
.WORD 5
|
||
.LONG leap3
|
||
.WORD 5
|
||
.LONG leap2
|
||
.WORD 5
|
||
GRR2:
|
||
.LONG growl1
|
||
.WORD 5
|
||
.LONG growl2
|
||
.WORD 5
|
||
.LONG 0
|
||
*
|
||
*TEAR ATTACK
|
||
*
|
||
TEAR1:
|
||
.LONG tear1
|
||
.WORD 5
|
||
.LONG tear2
|
||
.WORD 5
|
||
.LONG tear3
|
||
.WORD 5
|
||
.LONG tear4
|
||
.WORD 5
|
||
.LONG tear5
|
||
.WORD 5
|
||
.LONG tear6
|
||
.WORD 5
|
||
.LONG tear4
|
||
.WORD 5
|
||
.LONG tear2
|
||
.WORD 5
|
||
.LONG 0
|
||
|
||
TEAR2:
|
||
.LONG tear2
|
||
.WORD 5
|
||
.LONG tear3
|
||
.WORD 3
|
||
.LONG tear4
|
||
.WORD 2
|
||
.LONG tear5
|
||
.WORD 5
|
||
.LONG tear6
|
||
.WORD 5
|
||
.LONG tear5
|
||
.WORD 3
|
||
.LONG tear4
|
||
.WORD 2
|
||
.LONG tear3
|
||
.WORD 3
|
||
.LONG tear2
|
||
.WORD 2
|
||
.LONG 0
|
||
*
|
||
*DOG DRAG OFF CORPSE
|
||
*
|
||
DRAG:
|
||
.LONG drag4
|
||
.WORD 8
|
||
.LONG drag5
|
||
.WORD 8
|
||
.LONG drag6
|
||
.WORD 8
|
||
.LONG drag7
|
||
.WORD 8
|
||
.LONG 0
|
||
*
|
||
*LITTLE DOGGIE RUN AWAY
|
||
*
|
||
LILDOG:
|
||
.LONG smdog1
|
||
.WORD 3
|
||
.LONG smdog2
|
||
.WORD 3
|
||
.LONG smdog3
|
||
.WORD 3
|
||
.LONG smdog4
|
||
.WORD 3
|
||
.LONG smdog5
|
||
.WORD 3
|
||
.LONG smdog6
|
||
.WORD 3
|
||
.LONG 0
|
||
CHIBLO:
|
||
.LONG smdog1
|
||
.WORD 5
|
||
.LONG smdog4
|
||
.WORD 5
|
||
.LONG smdog2
|
||
.WORD 5
|
||
.LONG smdog6
|
||
.WORD 5
|
||
.LONG smdog3
|
||
.WORD 5
|
||
.LONG smdog5
|
||
.WORD 5
|
||
.LONG 0
|
||
|
||
|