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
|
|||
|
|
|||
|
|