1865 lines
35 KiB
NASM
1865 lines
35 KiB
NASM
.FILE 'NARCLOWN.ASM'
|
||
.TITLE " <<< c l o w n - S L A S H E R >>>"
|
||
|
||
**************************************************************************
|
||
* *
|
||
* 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 "IMGTBL.GLO"
|
||
.INCLUDE "NARCEQU.ASM" ;NARC Equates
|
||
.INCLUDE "NARCTEQU.ASM" ;TODD JIZZ
|
||
.INCLUDE "NARCLOWN.TBL" ;Image Label Equates
|
||
.GLOBAL PORSCHE1
|
||
.GLOBAL ZCHK,XZCNTCK,CARCHK
|
||
.GLOBAL CLWNDISP,CLNSNDST
|
||
* .GLOBAL HKCOLL
|
||
.GLOBAL CLWNCRM1,OIDATA
|
||
.TEXT
|
||
*
|
||
*CLOWN DISPATCHER
|
||
*
|
||
*CLWNDISP:
|
||
* CREATE 0CDH,CLWAIT
|
||
* RETS
|
||
*CLWAIT:
|
||
* SLEEP 30
|
||
* CREATE 0E1H,CLNSND
|
||
*CLWNDIS1:
|
||
* MOVE @KNAPCNT,A0,W ;HOW MANY CLWN BABIES?
|
||
* CMPI 1,A0
|
||
* JRHS CLWNDIS4 ;DON'T NEED MORE
|
||
* MOVI >0E60,A14
|
||
* CLR A5
|
||
* CALLR CLWNCOLD
|
||
*CLWNDIS4:
|
||
* SLOOP 30,CLWNDIS1 ;WAIT FOR THEM TO DIE
|
||
*
|
||
*CLOWN ENTRY SOUND PROCESS
|
||
*
|
||
CLNSNDST
|
||
CREATE INDPID,CLNSND
|
||
RETS
|
||
CLNSND:
|
||
SLEEP 4 ;WAIT FOR CLOWNS TO COME OUT
|
||
MOVE @KNAPCNT,A0,W
|
||
JREQ CLNSND
|
||
|
||
MOVI CLTUNSND,A0,L ;PLAY CLOWN TUNE... THEIR COMING
|
||
CALLA ONESND
|
||
SLEEP 300
|
||
MOVI CLAFSND,A0,L
|
||
CALLA ONESND
|
||
JAUC SUCIDE
|
||
*
|
||
*CLOWN COLD START
|
||
*A5=Y:X COORDINATE
|
||
*A14=SUBTYPE B0-3
|
||
CLWNCOLD:
|
||
MOVE A14,A10
|
||
MOVE A5,A9
|
||
CREATE >0E60,CLOWN
|
||
MOVE A10,A1
|
||
SLL 28,A1
|
||
SRL 22,A1
|
||
ADDI CLNPTAB,A1
|
||
ADDI ETEMP4,A0 ;LOAD ETEMP4,5,6
|
||
MOVE *A1+,*A0+,W
|
||
MOVE *A1+,*A0+,W
|
||
MOVE *A1,*A0,W
|
||
RETS
|
||
*
|
||
*CLOWN PROCESS
|
||
*A9=XY COORD
|
||
*A10= OID
|
||
*ETEMP4=JUMP PROB
|
||
*ETEMP4+>10=GIRL PROB
|
||
*ETEMP5=GIVEUP PROB
|
||
*
|
||
CLOWN:
|
||
MOVE @KNAPCNT,A0,W ;HOW MANY CLOWNS?
|
||
MOVE @CLWNMAX,A1,W
|
||
CMP A0,A1
|
||
JALS SUCIDE ;DON'T NEED MORE
|
||
|
||
MOVE A9,A9 ;PRESET COORD?
|
||
JRNE CLWN2XX ;YES, USE IT
|
||
|
||
MOVE @WORLDTL,A1,W ;COME FROM EDGE OF SCREEN
|
||
CALLA RANDOM
|
||
MOVE A0,A0
|
||
JRN CLWN2X
|
||
ADDI 512,A1 ;START HIM AT RIGHT SCREEN EDGE
|
||
CLWN2X:
|
||
ZEXT A1
|
||
|
||
MOVE @PLYMIN,B0,W
|
||
MOVE @PLYMAX,B1,W
|
||
CALLA RANGRAND
|
||
SUBI 74,A0
|
||
SLL 16,A0
|
||
ADD A0,A1
|
||
MOVE A1,A9
|
||
CLWN2XX:
|
||
MOVE *A13(ETEMP4),A0,W ;GET JUMP PROB
|
||
CALLA RANDPER
|
||
JRNC CLWN1X
|
||
JSRP JUMPER ;LETS DO A JUMPER
|
||
CMPI P1DATA,A11
|
||
JREQ GPLAYR ;WERE AFTER PLAYER
|
||
CMPI P2DATA,A11
|
||
JREQ GPLAYR
|
||
JRUC GHOOKR ;WERE AFTER HOOKERS
|
||
CLWN1X:
|
||
MOVE A9,A1 ;GET Y:X COORD
|
||
MOVI [1,1],A5 ;SET SPEED
|
||
MOVI CLWNTAB,A6
|
||
MOVI CLWNINIT,A14 ;CLOWN ENEMY INIT
|
||
MMTM SP,A10
|
||
CALLA ESINITUL ;CREATE CLOWN
|
||
MMFM SP,A10
|
||
JAEQ SUCIDE ;CREATE ERROR, EXIT
|
||
CALLR CLNSETUP
|
||
JRUC CLOWNST
|
||
*
|
||
*CLOWN PROBABILITY TABLE
|
||
*
|
||
JMPROB .SET >00 ;JUMP PROB
|
||
GRLPROB .SET >10 ;GET GIRL PROB
|
||
QTPROB .SET >20 ;QUIT PROB
|
||
CLNPTAB:
|
||
.WORD 500,750,750,0 ;NORMAL DUDE
|
||
.WORD 500,700,000,0 ;DOESN'T GIVE UP
|
||
.WORD 500,1000,750,0 ;GIRL GETTER
|
||
.WORD 1000,700,750,0 ;JUMPER
|
||
*
|
||
*CLOWN SETUP
|
||
*A8=OBJECT
|
||
*A10=OID
|
||
*A13=PROCESS
|
||
*
|
||
CLNSETUP:
|
||
MMTM SP,A0,A1 ;PUSH REGGIES
|
||
MOVE A10,*A8(OID),W ;SAVE OBJECT ID
|
||
CLR A0
|
||
MOVE A0,*A13(ETEMP2),L ;NO GIRL YET...
|
||
MOVE @CLWNSHT,A0,W ;SHOTS TO TAKE
|
||
MOVE A0,A1
|
||
CALLA RANDU
|
||
ADD A1,A0
|
||
MOVE A0,*A13(ETEMP3),W ;SETUP SHOT COUNT
|
||
|
||
MOVE @KNAPCNT,A0,W
|
||
INC A0
|
||
MOVE A0,@KNAPCNT,W ;INCREMENT CLOWN COUNT
|
||
MMFM SP,A0,A1
|
||
RETS
|
||
|
||
*
|
||
*ETEMP2=GOT HOOKER FLAG
|
||
*ETEMP3=SHOT COUNT
|
||
*ETEMP4=JUMPER PROB
|
||
*ETEMP4+>10=GIRL PROB
|
||
*ETEMP5=GIVEUP PROB
|
||
CLOWNST:
|
||
CLR A0
|
||
MOVE A0,*A13(ETEMP2),L ;NO GIRL YET...
|
||
MOVE *A13(ETEMP4+>10),A0,W ;GET HOOKER %
|
||
CALLA RANDPER
|
||
JRC GHOOKR
|
||
*
|
||
*GET NEAREST PLAYER AND STAB HIM
|
||
*A8=CLOWN OBJECT
|
||
*
|
||
GPLAYR:
|
||
MOVI CLWNWLK,A9
|
||
CALLA RANDOM
|
||
JRN GPLAYR1
|
||
MOVI CLWNRUN,A9
|
||
GPLAYR1:
|
||
CALLA GETCHOK ;IF CLOSE HOOKER, BAG HER
|
||
JRNE GHOOKR
|
||
CMPI CLWNRE,A9
|
||
JRHS GPLAYR ;INVALID ANIMATION, RESET...
|
||
MOVK 4,A1
|
||
JSRP FRANIM
|
||
MOVE A0,A10 ;SAVE SLEEP TIME
|
||
JRC GPLAYR
|
||
GPLAYRL:
|
||
CALLA GETCPLY ;GET CLOSEST PLAYER
|
||
MOVE *A0(PFLAGS),A7,L
|
||
MOVI 25,A5
|
||
MOVI 15,A6
|
||
MOVE *A0(POBJ),A0,L ;PLAYER OBJECT
|
||
BTST BDEAD,A7 ;PLAYER DOWN?
|
||
JREQ GPLYRL1 ;NOPE
|
||
MOVI 7,A6
|
||
CLR A1 ;NO X OFFSET
|
||
MOVI -5,A3
|
||
CALLA XZCNTCK ;CENTERED XZ CHECK
|
||
JRUC GPLYRL2
|
||
GPLYRL1:
|
||
CALLA XZCHK ;ARE WE IN POSITION
|
||
GPLYRL2:
|
||
JRNC GPLAYR2 ;NO, GET DIRECTION
|
||
GPLAYRL0
|
||
BTST BJUMP2,A7 ;IN AIR ?
|
||
JRNE GPLAYR20 ;YES, BE STUPID
|
||
|
||
CMPI 15,A3
|
||
JRHS CLSTAB ;NOT TOO CLOSE
|
||
MOVE *A8(OXVEL),A0,L ;NO X VEL ?
|
||
JREQ GPLAYR2 ;GIVE HIM XVEL
|
||
CLR A0
|
||
MOVE A0,*A8(OZVEL),L ;COOL VELOCITY
|
||
MOVE A0,*A8(OYVEL),L ;COOL VELOCITY
|
||
CALLA SHVELCPY ;DO IT FOR SHADOW
|
||
JRUC GPLAYR20
|
||
GPLAYR2:
|
||
CMPI 80,A3 ;CLOSE ENOUGH TO JUMP?
|
||
JRHS GPLAYR3
|
||
CMPI 80,A4
|
||
JRHS GPLAYR3
|
||
MOVI 10,A0
|
||
CALLA RANDPER
|
||
JRNC GPLAYR3
|
||
JSRP JUMPLIL ;DO A LITTLE JUMP
|
||
JRUC GPLAYRL
|
||
GPLAYR3:
|
||
CALLR CLWNDIR ;NO GET DIRECTION
|
||
GPLAYR20:
|
||
SLEEP 1
|
||
DSJ A10,GPLAYRL
|
||
JRUC GPLAYR1
|
||
*
|
||
*XZCNTCK
|
||
*X CHECK IS ON OBJECT CENTERS NOT ANIMATION POINT
|
||
*CALLING PARAMETERS:
|
||
*A0=OBJECT SEEKED
|
||
*A1= X OFFSET FROM SEEKED OBJECT
|
||
*A3= Z OFFSET
|
||
*A5=X RANGE
|
||
*A6=Z RANGE
|
||
*A8=OBJECT SEEKING
|
||
*RETURNS:
|
||
*CARRY SET IF HE IS CLOSE ENOUGH
|
||
*A1=DELTA X
|
||
*A2=DELTA Z
|
||
*A3=ABS DELTA X
|
||
*A4=ABS DELTA Z
|
||
XZCNTCK:
|
||
MOVE *A0(OSIZEX),A2,W
|
||
SRL 1,A2
|
||
ADD A1,A2
|
||
MOVE *A0(OXPOS),A1,W
|
||
ADD A2,A1
|
||
MOVE *A0(OZPOS),A2,W
|
||
ADD A3,A2
|
||
MOVE *A8(OSIZEX),A4,W
|
||
SRL 1,A4
|
||
MOVE *A8(OXPOS),A3,W
|
||
ADD A4,A3
|
||
MOVE *A8(OZPOS),A4,W
|
||
SUB A4,A2
|
||
SUB A3,A1
|
||
MOVE A1,A3
|
||
MOVE A2,A4
|
||
ABS A3
|
||
ABS A4
|
||
CMP A5,A3
|
||
JRNC XZCNTX
|
||
CMP A6,A4
|
||
XZCNTX:
|
||
RETS
|
||
*
|
||
*CLOWN BLOOD START
|
||
*A8=CLOWN, A0=PLAYER DATA
|
||
*
|
||
CLBLOOD:
|
||
MMTM SP,A8,A11
|
||
MOVE *A8(OID),A11,W
|
||
MOVE *A8(OYPOS),A9,W
|
||
ADDI 25,A9 ;ADJUST FOR KNIFE POSITION
|
||
MOVE *A0(PFLAGS),A8,L
|
||
BTST BSWALK,A8
|
||
JREQ CLBLD0
|
||
ADDI 8,A9 ;LOWER BLOOD FOR SQUAT WALK
|
||
CLBLD0:
|
||
MOVE *A0(POBJ),A8,L
|
||
CREATE 0EDH,SPLATBOX
|
||
MOVI 15,A8
|
||
MOVE A8,*A0(PTIME),W ;DELAY START OF BLOOD
|
||
MMFM SP,A8,A11
|
||
RETS
|
||
*STAB THE SUCKER, GACY BABY
|
||
CLSTAB:
|
||
MOVE A1,A1 ;FLIP THE DUDE PROPERLY
|
||
JRN CLSTAB0
|
||
CALLA NOYFLP
|
||
JRUC CLSTAB1
|
||
CLSTAB0:
|
||
CALLA YFLP
|
||
CLSTAB1:
|
||
CALLA PSTOP ;STOP THE DUDE
|
||
CALLA GETCPLY
|
||
MOVE A0,A2 ;GIVE PLAYER KNIFE HIT
|
||
CALLA KNIFEHIT
|
||
MOVE *A0(PFLAGS),A1,L
|
||
BTST BDEAD,A1 ;PLAYER LYING DOWN?
|
||
JREQ STABHI ;NO, UPRIGHT...
|
||
|
||
*STAB HIM LOW DOWN
|
||
MOVE *A0(POBJ),A2,L ;FLIP THE DUDE OPPOSITE TO PLAYER
|
||
MOVE *A2(OFLAGS),A1,L
|
||
BTST B_FLIPH,A1
|
||
JRZ CSTBLO1
|
||
CALLA NOYFLP
|
||
JRUC CSTBLO2
|
||
CSTBLO1:
|
||
CALLA YFLP
|
||
CSTBLO2:
|
||
MOVE *A8(OSIZEY),A1,W ;ALREADY LOW?
|
||
CMPI 50,A1
|
||
JRLS STABLO1 ;YES...
|
||
MOVI CLWNKST1,A9
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
STABLO1:
|
||
MOVI CLWNKST2,A9
|
||
MOVI CLSTBSND,A0
|
||
CALLA ONESND
|
||
MOVK 1,A1
|
||
JSRP FRANIM ;STAB BEFORE SPURT
|
||
CALLA GETCPLY
|
||
MOVE *A0(PFLAGS),A1,L
|
||
BTST BDEAD,A1 ;PLAYER LYING DOWN?
|
||
JREQ STABLO2 ;NO, UPRIGHT NO BLOOD WE MISSED
|
||
MOVI >007A000C,A9 ;Y:X OFFSET
|
||
CREATE 0EDH,SPLATS
|
||
STABLO2:
|
||
MOVI CLWNKST3,A9
|
||
JRUC CLSTAB5
|
||
|
||
*MAKE SOME BLOOD
|
||
STABHI:
|
||
CALLR CLBLOOD
|
||
CMPI CLWNSTBE,A9 ;JUST FINISHED REG STAB?
|
||
JRNE CLSTAB2
|
||
MOVI 500,A0
|
||
CALLA RANDPER ;GO FOR A REPEAT?
|
||
JRNC CLSTAB2 ;NOPE
|
||
MOVI STABREP,A2
|
||
JRUC CLSTAB3
|
||
CLSTAB2:
|
||
MOVI STABTAB,A2
|
||
MOVI 4,A0
|
||
CALLA RANDU
|
||
DEC A0
|
||
SLL 6,A0
|
||
ADD A0,A2
|
||
CLSTAB3:
|
||
MOVE *A2+,A9,L ;GET ANIMATION
|
||
MOVE *A2+,A0,L ;GET SOUND
|
||
CLSTAB4:
|
||
CALLA ONESND
|
||
CLSTAB5:
|
||
MOVK 1,A1
|
||
JSRP FRANIM ;STAB HIM
|
||
MOVI 800,A0
|
||
CALLA RANDPER
|
||
MOVK 1,A10
|
||
JRC GPLAYRL ;GET HIM AGAIN
|
||
|
||
*LAUGH IT UP
|
||
LAFITUP:
|
||
MOVI CLAFSND,A0 ;LAUGH IT UP
|
||
CALLA ONESND
|
||
MOVI CLWNLAF,A9
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
MOVE *A13(ETEMP5),A0,W ;GET QUIT PROB
|
||
CALLA RANDPER
|
||
JRNC CLOWNST ;GET HIM AGAIN...
|
||
|
||
*RUN AWAY
|
||
MOVE @CLWNSPD,A1,W ;GET VELOCITY
|
||
SLL 9,A1 ;NORMALIZE IT
|
||
MOVE @RAND,A0,W
|
||
JRN RUN0
|
||
NEG A1
|
||
RUN0:
|
||
MOVE A1,*A8(OXVEL),L
|
||
CALLA SHVELCPY ;DO IT FOR SHADOW
|
||
MOVE A1,A1 ;TEST X VELOCITY
|
||
JRN RUN1
|
||
CALLA NOYFLP
|
||
JRUC RUN2
|
||
RUN1:
|
||
CALLA YFLP
|
||
RUN2:
|
||
MOVI 20,A0
|
||
CALLA RANDU
|
||
MOVE A0,A10
|
||
RUNLP:
|
||
MOVI CLWNRUN,A9
|
||
MOVK 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 350,A1
|
||
JRHS RUNLP1 ;BAG IT TOO FAR OUT
|
||
DSJS A10,RUNLP
|
||
JRUC CLOWNST
|
||
*CALL IT QUITS- TOO FAR OFF
|
||
RUNLP1:
|
||
MOVE @KNAPCNT,A0,W
|
||
DEC A0
|
||
MOVE A0,@KNAPCNT,W ;DECREMENT CLOWN COUNT
|
||
MOVE A8,A0
|
||
CALLA DELENEMY ;OFF ENEMY
|
||
JAUC SUCIDE ;BAG IT...
|
||
*
|
||
*STAB ACTION/SOUND TABLE
|
||
*
|
||
STABTAB:
|
||
.LONG CLWNSTAB,CLSTBSND ;REGULAR STAB
|
||
.LONG CLWNSTBF,CLSLHSND ;FOREHAND STAB
|
||
.LONG CLWNSTBB,CLSLHSND ;BACKHAND STAB
|
||
.LONG CLWNSTOH,CLSTBSND ;OVERHEAD SMASH
|
||
STABREP:
|
||
.LONG CLWNSTB2,CLSTBSND ;QUICKIE REGULAR STAB
|
||
*
|
||
*JUMP FROM THE GROUND
|
||
*A8=CLOWN
|
||
*A1=DX, A2=DZ
|
||
JUMPLIL:
|
||
CALLA SHADST
|
||
SLL 10,A1 ;GET XVEL
|
||
MOVE A1,*A8(OXVEL),L
|
||
SLL 10,A2
|
||
MOVE A2,*A8(OZVEL),L
|
||
ADDI ->30000,A2
|
||
MOVE A2,*A8(OYVEL),L
|
||
CALLA SHVELFLP ;SHADOW VELOCITY AND FLIP
|
||
JRUC JUMPRC ;DO YOUR JUMP DUDE...
|
||
*
|
||
*JUMPING CLOWN
|
||
*
|
||
JUMPER:
|
||
* MOVE A9,A1 ;GOT A COORD?
|
||
* JRNE JUMPER00 ;YES...
|
||
*MAKE YOUR OWN COORDINATE
|
||
MOVI 350,A0
|
||
CALLA RANDU
|
||
ADDI 75,A0
|
||
MOVE @WORLDTL,A1,W
|
||
ADD A0,A1 ;SET INITIAL X
|
||
ZEXT A1
|
||
MOVE @PLYMIN,A0 ;GET INITIAL Y
|
||
SLL 16,A0
|
||
ADD A0,A1
|
||
JUMPER00:
|
||
MOVI [1,1],A5 ;SET SPEED
|
||
MOVI CLWNTAB,A6
|
||
MOVI CLWNINIT,A14 ;CLOWN ENEMY INIT
|
||
MMTM SP,A10,A11
|
||
CALLA ENINITLL ;CREATE CLOWN
|
||
MMFM SP,A10,A11
|
||
JAEQ SUCIDE ;CREATE ERROR, EXIT
|
||
CALLR CLNSETUP ;SETUP SOME STUFF, INC KNAPCNT ETC.
|
||
|
||
MOVE @PLZMIN,A1,W
|
||
MOVE A1,*A8(OZPOS),W
|
||
MOVE *A8(OSHAD),A0,L
|
||
JREQ JUMPER0
|
||
CALLA SHADCPY ;RESET SHADOW AND Z FOR PLZMIN
|
||
|
||
JUMPER0:
|
||
MOVE *A8(OYPOS),A0,W ;SET UP Y HEIGHT
|
||
SUBI 100,A0
|
||
MOVE A0,*A8(OYPOS),W ;SET UP Y HEIGHT
|
||
|
||
MOVE *A13(ETEMP4+>10),A0,W ;GET HOOKER %
|
||
CALLA RANDPER
|
||
JRNC JMPLAY
|
||
CALLA GETHOK ;GET CLOSEST HOOKER IN A0
|
||
JREQ JMPLAY ;NO HOOKERS AROUND...GET THE PLAYER...
|
||
MOVE A0,A11 ;SAVE HOOKER OBJECT
|
||
JRUC JMPVEL
|
||
JMPLAY:
|
||
CALLA SELCTPLY
|
||
MOVE A11,A0
|
||
CALLA GETPLYR
|
||
MOVE *A0(POBJ),A0,L ;GET TARGET
|
||
|
||
*COMPUTE JUMP VELOCITIES
|
||
JMPVEL:
|
||
MOVE *A0(OXVAL),A1,L ;COMPUTE X VELOCITY
|
||
MOVE *A8(OXVAL),A2,L
|
||
MOVE *A0(OXVEL),A3,L
|
||
SUB A2,A1
|
||
SRA 6,A1
|
||
ADD A1,A3
|
||
MOVI >C0000,A2 ;CHECK CLOWN VELOCITY LIMITS
|
||
CMP A2,A3
|
||
JRLT JMPV1
|
||
MOVE A2,A3
|
||
JMPV1
|
||
NEG A2
|
||
CMP A2,A3
|
||
JRGT JMPV2
|
||
MOVE A2,A3
|
||
JMPV2
|
||
MOVE A3,*A8(OXVEL),L
|
||
CALLA FLP ;FLIP
|
||
|
||
MOVE *A0(OZVAL),A1,L ;COMPUTE Z VELOCITY
|
||
MOVE *A8(OZVAL),A2,L
|
||
MOVE *A0(OZVEL),A3,L
|
||
SUB A2,A1
|
||
SRA 6,A1
|
||
ADD A3,A1
|
||
JRNN JUMPER1
|
||
CLR A1 ;NO NEGATIVE Z VELOCITY
|
||
JUMPER1:
|
||
MOVE A1,*A8(OZVEL),L
|
||
|
||
ADDI ->10000,A1 ;GET Y VELOCITY
|
||
MOVE A1,*A8(OYVEL),L
|
||
CALLA SHVELCPY ;COPY VELOCITY TO SHADOW
|
||
JUMPRC:
|
||
MOVI CLWNJMP,A9 ;JUMP ON THE DUDE
|
||
JUMP0:
|
||
MOVK 4,A1
|
||
JSRP FRANIM
|
||
JRNC JUMP1
|
||
MOVI CLWNJMP0,A9 ;HOLDING FRAME
|
||
JRUC JUMP0
|
||
*FALLING GRAVITY PROCESS
|
||
JUMP1:
|
||
SLEEP 3
|
||
CALLR ZCHK ;MAKE SURE Z IN BOUNDS
|
||
MOVE *A8(OYVEL),A0,L ;EFFECT OF GRAVITY
|
||
ADDI >5000,A0
|
||
MOVE A0,*A8(OYVEL),L
|
||
JRN JUMP0 ;UPWARD VEL, NO LAND
|
||
CALLA DFRMGRND
|
||
CMPI 0,A1
|
||
JRGT JUMP0 ;IN THE AIR STILL
|
||
|
||
* MOVI CLWNJMP1,A9 ;LANDING FRAMES
|
||
* MOVK 1,A1
|
||
* JSRP FRANIM
|
||
|
||
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
|
||
RETP
|
||
*
|
||
*CHECK Z FOR BOUNDS
|
||
*A8=OBJECT
|
||
*CLEARS ZV IF OUT OF RANGE
|
||
*
|
||
ZCHK:
|
||
MMTM SP,A0,A1,A2,A3,A4
|
||
MOVE *A8(OZPOS),A4,W ;CHECK IF Z LEGAL
|
||
MOVE @PLZMIN,A2,W
|
||
SUB A2,A4 ;CHECK LOWER BOUND
|
||
JRGE ZOK2
|
||
ZBAD:
|
||
MOVE *A8(OYVEL),A1,L
|
||
MOVE *A8(OZVEL),A3,L
|
||
SUB A3,A1 ;REMOVE ZVEL FROM YVEL
|
||
MOVE *A8(OYPOS),A3,W
|
||
SUB A4,A3 ;CORRECT OYPOS ALSO
|
||
CLR A0
|
||
MOVE A1,*A8(OYVEL),L
|
||
MOVE A0,*A8(OZVEL),L
|
||
MOVE A3,*A8(OYPOS),W
|
||
MOVE A2,*A8(OZPOS),W
|
||
MOVE *A8(OSHAD),A0,L ;SET Z POSITION
|
||
JREQ ZOK2
|
||
CALLA SHADCPY ;RESET SHADOW AND Z FOR PLZMIN
|
||
ZOK2:
|
||
MMFM SP,A0,A1,A2,A3,A4
|
||
RETS
|
||
*
|
||
*GO GET HOOKER
|
||
*
|
||
GHOOKR:
|
||
GHOOKR0:
|
||
MOVI CLWNWLK,A9
|
||
CALLA RANDOM
|
||
JRN GHOOKR1
|
||
MOVI CLWNRUN,A9
|
||
GHOOKR1:
|
||
CMPI CLWNRE,A9
|
||
JRHS GHOOKR ;INVALID ANIMATION, RESET...
|
||
MOVK 4,A1
|
||
JSRP FRANIM
|
||
MOVE A0,A10 ;SAVE SLEEP TIME
|
||
JRC GHOOKR0
|
||
GHOOKRL:
|
||
CALLA GETCHOK ;GET CLOSEST HOOKER IN A0
|
||
JRNE GPLAYR10 ;FOUND A CLOSIE
|
||
CALLA GETHOK ;GET CLOSEST HOOKER IN A0
|
||
JREQ GPLAYR ;NO HOOKERS AROUND...GET THE PLAYER...
|
||
GPLAYR10
|
||
MOVE A0,A11 ;SAVE HOOKER OBJECT
|
||
MOVI 25,A5
|
||
MOVI 10,A6
|
||
CALLA XZCHK ;ARE WE IN POSITION
|
||
JRNC GHOOKR2 ;NO, GET DIRECTION
|
||
|
||
CMPI 15,A3
|
||
JRHS GOTHER ;NOT TOO CLOSE
|
||
|
||
MOVE *A8(OXVEL),A0,L ;NO X VEL ?
|
||
JREQ GHOOKR2 ;GIVE HIM XVEL
|
||
CLR A0
|
||
MOVE A0,*A8(OZVEL),L ;COOL VELOCITY
|
||
MOVE A0,*A8(OYVEL),L ;COOL VELOCITY
|
||
CALLA SHVELCPY ;DO IT FOR SHADOW
|
||
JRUC GHOOKR20
|
||
GHOOKR2:
|
||
CMPI 80,A3 ;CLOSE ENOUGH TO JUMP?
|
||
JRHS GHOOKR3
|
||
CMPI 80,A4
|
||
JRHS GHOOKR3
|
||
MOVI 20,A0
|
||
CALLA RANDPER
|
||
JRNC GHOOKR3
|
||
JSRP JUMPLIL ;DO A SPECIAL LITTLE JUMP
|
||
JRUC GHOOKRL
|
||
GHOOKR3:
|
||
CALLR CLWNDIR ;NO GET DIRECTION
|
||
GHOOKR20:
|
||
SLEEP 1
|
||
DSJ A10,GHOOKRL
|
||
JRUC GHOOKR1
|
||
*
|
||
*STAB THE SUCKER OR DRAG HER OFF... GACY BABY
|
||
*A11=HOOKER OBJECT
|
||
*
|
||
GOTHER:
|
||
*PICK HER UP
|
||
CALLA PSTOP ;STOP THE CLOWN
|
||
*** MOVI 100,A0
|
||
*** CALLA RANDPER
|
||
*** JRNC STABHER ;STAB HER FIRST
|
||
|
||
MOVI 1,A1
|
||
MOVE A1,*A13(ETEMP2),W ;SET FLAG WE GOT HER
|
||
MMTM SP,A8
|
||
MOVE A11,A8
|
||
CALLA DELENEMY
|
||
MMFM SP,A8
|
||
MOVE *A11(OPLINK),A0,L ;KILL HER OBJECT
|
||
CALLA KILL ;KILL HER PROCESS
|
||
DECW @HOOKCNT
|
||
MOVI CLSTBSND,A0
|
||
CALLA ONESND
|
||
MOVI CLNLIFT,A9 ;TAKE HER AWAY
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
CLWNCARL:
|
||
MOVI >0001C000,A1
|
||
MOVE *A8(OFLAGS),A0,W
|
||
BTST B_FLIPH,A0
|
||
JREQ CLWNCAR0
|
||
NEG A1 ;ADJUST VELOCITY FOR DIRECTION
|
||
CLWNCAR0:
|
||
MOVE A1,*A8(OXVEL),L
|
||
CALLA SHVELCPY ;COPY VELOCITY TO SHADOW
|
||
MOVI 250,A0
|
||
CALLA RANDPER
|
||
JRNC CLNCAR00
|
||
MOVI HYELSND,A0 ;LAUGH IT UP DUDE !!!
|
||
CALLA ONESND
|
||
|
||
CLNCAR00:
|
||
MOVI CLNCARY,A9 ;TAKE HER AWAY
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
MOVI 25,A0
|
||
CALLA RANDPER
|
||
JRNC CLWNCAR1
|
||
MOVE *A8(OFLAGS),A1,W ;GIVE HIM A FLIP NOW AND THEN
|
||
XORI M_FLIPH,A1
|
||
MOVE A1,*A8(OFLAGS),W
|
||
CLWNCAR1:
|
||
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 512,A1
|
||
JRHS RUNLP1 ;BAG IT TOO FAR OUT
|
||
JRUC CLWNCARL
|
||
|
||
*STAB HER TO DEATH
|
||
*A11=HOOKER OBJECT
|
||
*STABHER:
|
||
* MOVE A1,A1 ;FLIP THE DUDE PROPERLY
|
||
* JRN HKSTAB0
|
||
* CALLA NOYFLP
|
||
* JRUC HKSTAB1
|
||
*HKSTAB0:
|
||
* CALLA YFLP
|
||
*HKSTAB1:
|
||
* CALLA PSTOP ;STOP THE DUDE
|
||
**CHANGE HER PROCESS
|
||
* MOVI SPLTCOLBOX,A14
|
||
* MOVE A14,*A11(OCVECT),L ;COLLISION POINTER CHANGE TO BLOOD
|
||
* MOVK 1,A10 ;DEAD INDICATOR
|
||
* MOVE *A11(OPLINK),A4,L
|
||
* MOVE *A4(PSPTR),A1,L ;GET PROCESS STACK POINTER
|
||
* ADDI 4*32,A1
|
||
* MOVI HOOKFIT,A2 ;GET NEW WAKEUP ADDR (CLOWN UNFLIP)
|
||
* MOVE *A8(OFLAGS),A3,W ;CHECK CLOWN FLIP
|
||
* BTST B_FLIPH,A3
|
||
* JREQ HKSTAB10
|
||
* MOVI HOOKFIT1,A2 ;WAKEUP FOR CLOWN FLIP
|
||
*HKSTAB10:
|
||
* MOVI 250,A0 ;IS HOOKER DEAD?
|
||
* CALLA RANDPER
|
||
* JRNC HKSTAB11 ;NO
|
||
* MOVI HOOKDIE,A2 ;KILL HER
|
||
* MOVI SPLTCOLANI,A14
|
||
* MOVE A14,*A11(OCVECT),L ;COLLISION POINTER NULL FOR NOW
|
||
* CLR A10
|
||
*HKSTAB11:
|
||
* MOVE A2,*A1,L
|
||
* MOVI 1,A2 ;DELAY FOR DEFENSE
|
||
* MOVE A2,*A4(PTIME),W ;SET WAKEUP TIME
|
||
**STAB HER
|
||
**MAKE SOME BLOOD
|
||
* MMTM SP,A8,A11
|
||
* MOVE *A8(OID),A11,W
|
||
* MOVE *A8(OYPOS),A9,W
|
||
* ADDI 25,A9 ;ADJUST FOR KNIFE POSITION
|
||
* MOVE *SP,A8,L ;PUT IN OBJECT
|
||
* CREATE 0EDH,SPLATBOX
|
||
* MOVI 1,A8
|
||
* MOVE A8,*A4(PTIME),W ;DELAY START OF BLOOD
|
||
* MMFM SP,A8,A11
|
||
* CMPI CLWNSTBE,A9 ;JUST FINISHED REG STAB?
|
||
* JRNE HKSTAB2
|
||
* MOVI 500,A0
|
||
* CALLA RANDPER ;GO FOR A REPEAT?
|
||
* JRNC HKSTAB2 ;NOPE
|
||
* MOVI STABREP,A2
|
||
* JRUC HKSTAB3
|
||
*HKSTAB2:
|
||
* MOVI STABTAB,A2
|
||
* MOVI 4,A0
|
||
* CALLA RANDU
|
||
* DEC A0
|
||
* SLL 6,A0
|
||
* ADD A0,A2
|
||
*HKSTAB3:
|
||
* MOVE *A2+,A9,L ;GET ANIMATION
|
||
* MOVE *A2+,A0,L ;GET SOUND
|
||
* CALLA ONESND
|
||
* MOVK 1,A1
|
||
* JSRP FRANIM ;STAB HER
|
||
* MOVE A10,A10
|
||
* JRNZ GHOOKRL ;GET HER AGAIN
|
||
*
|
||
**SHE IS DEAD... STAB HER LOW OR LAUGH
|
||
* MOVI 500,A0
|
||
* CALLA RANDPER
|
||
* JRC LAFITUP
|
||
* MOVI 2,A0
|
||
* CALLA RANDU
|
||
* ADDK 1,A0
|
||
* MOVE A0,A10 ;FORM STAB COUNT
|
||
*
|
||
**STAB HER LOW
|
||
* MOVI CLWNKST1,A9 ;GO DOWN ON HER
|
||
* MOVK 1,A1
|
||
* JSRP FRANIM
|
||
*STABHL01:
|
||
* MOVI CLWNKST2,A9
|
||
* MOVI CLSTBSND,A0
|
||
* CALLA ONESND
|
||
* MOVK 1,A1
|
||
* JSRP FRANIM ;STAB BEFORE SPURT
|
||
* MOVI >007A000C,A9 ;Y:X OFFSET
|
||
* CREATE 0EDH,SPLATS
|
||
* MOVI CLWNKST3,A9
|
||
* MOVK 1,A1
|
||
* JSRP FRANIM ;STAB HER
|
||
* MOVI 100,A0
|
||
* CALLA RANDPER
|
||
* JRC LAFITUP ;LAUGH IT UP
|
||
* DEC A10
|
||
* JRNE STABHL01
|
||
* JRUC CLOWNST ;START ALL OVER
|
||
*
|
||
**
|
||
**HOOKER FIGHT (BEING STABBED)
|
||
**A8= OBJECT
|
||
*HOOKFIT:
|
||
* CALLA PSTOP ;STOP MOVING
|
||
* CALLA YFLP ;ADJUST FLIP
|
||
* MOVI 6,A0 ;GET RANDOM JUMP
|
||
* CALLA RANDU
|
||
* ADDI 4,A0
|
||
* JRUC HOOKFITL
|
||
*
|
||
*HOOKFIT1:
|
||
* CALLA PSTOP ;STOP MOVING
|
||
* CALLA NOYFLP
|
||
* MOVI 6,A0
|
||
* CALLA RANDU
|
||
* ADDI -10,A0
|
||
*
|
||
*HOOKFITL:
|
||
* MOVE A13,A12
|
||
* ADDI PRCSIZ,A12 ;RESET STACK
|
||
* MOVE *A8(OXPOS),A1,W
|
||
* ADD A0,A1
|
||
* MOVE A1,*A8(OXPOS),W
|
||
* MOVE *A8(OSHAD),A2,L
|
||
* JREQ HOOKFIT2
|
||
* MOVE *A2(OXPOS),A1,W ;COPY TO SHADOW
|
||
* ADD A0,A1
|
||
* MOVE A1,*A2(OXPOS),W
|
||
*HOOKFIT2:
|
||
* MOVI HKFIGHT,A9 ;DO YOUR ANIMATION
|
||
*HOOKFT2L:
|
||
* MOVI 0,A1
|
||
* JSRP FRANIM
|
||
* JRC HOOKFIT3
|
||
*
|
||
* MOVI 5,A0
|
||
* CALLA RANDU
|
||
* ADDI -3,A0
|
||
*
|
||
* MOVE *A8(OXPOS),A1,W ;A LITTLE RANDOM MOTION FOLKS
|
||
* ADD A0,A1
|
||
* MOVE A1,*A8(OXPOS),W
|
||
* MOVE *A8(OSHAD),A2,L
|
||
* JREQ HOOKFT2L
|
||
* MOVE *A2(OXPOS),A1,W ;COPY TO SHADOW
|
||
* ADD A0,A1
|
||
* MOVE A1,*A2(OXPOS),W
|
||
* JRUC HOOKFT2L
|
||
*HOOKFIT3
|
||
* MOVE *A8(OYPOS),A6,W
|
||
* SLL 16,A6
|
||
* MOVE *A8(OXPOS),A5,W
|
||
* MOVY A6,A5
|
||
* MOVE *A8(OZPOS),A6,W
|
||
*
|
||
* CALLA DELENEMY
|
||
* DECW @HOOKCNT
|
||
* MOVI HOOKEOID|>00100000,A14 ;HOOKER ID
|
||
* CALLA HOOKCOLD ;START A HOOKER UP
|
||
* JAUC SUCIDE ;ITS ALL OVER...WE GOT AWAY
|
||
*
|
||
*HOOKER DEAD
|
||
*A8=OBJECT
|
||
*
|
||
*HOOKDIE:
|
||
* CALLA PSTOP ;STOP MOVING
|
||
* MOVI SPLTCOLBOX,A14 ;MAKE 'EM BLEED...
|
||
* MOVE A14,*A8(OCVECT),L ;COLLISION POINTER
|
||
* DECW @HOOKCNT
|
||
* MOVI >00004000,A0
|
||
* MOVE A0,*A8(OYVEL),L
|
||
* MOVE A0,*A8(OZVEL),L
|
||
* CALLA SHVELCPY ;COPY VELOCITY TO SHADOW
|
||
* MOVI HKDIE,A9
|
||
* MOVK 1,A1
|
||
* JSRP FRANIM
|
||
* MOVI DUMCOLL,A14
|
||
* MOVE A14,*A8(OCVECT),L ;COLLISION POINTER NULL FOR NOW
|
||
* CALLA PSTOP
|
||
* SLEEP 120
|
||
* MOVI [1,1],A9
|
||
* CREATE 0DFh,ESINK ;CREATE THE DEADMAN SINK
|
||
* JAUC SUCIDE ;DIE
|
||
|
||
**************************************************************************
|
||
*CLOWN 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)
|
||
*CLOWN TUNE SOUND
|
||
CLTUNSND .WORD >F3C0,>40,>809A,0
|
||
*CLOWN STAB SOUND
|
||
CLSTBSND .WORD >F01F,>08,>803A,0
|
||
*CLOWN SLASH SOUND
|
||
CLSLHSND .WORD >F01F,>08,>804B,0
|
||
*CLOWN LAUGH SOUND
|
||
CLAFSND .WORD >F020,>10,>804C,0
|
||
*CLOWN HIT BY BULLET SOUND
|
||
CLBULSND .WORD >F31F,>08,>8096,0
|
||
*CLOWN DIE BY BULLET SOUND
|
||
CLBDSND .WORD >F020,>08,>8013,0
|
||
*CLOWN DIE BY ROCKET
|
||
CLRDSND .WORD >F028,>10,>803D,20,>8042,0
|
||
*HOOKER MUFFLED YELL
|
||
HYELSND .WORD >F020,>10,>8039,0
|
||
*HIT BY CAR SOUND
|
||
CLCARSND .WORD >F026,>08,>8044,>20,>8042,0
|
||
*
|
||
*GET HOOKER
|
||
*A0=HOOKER FOUND
|
||
*NE=NO HOOKER FOUND, EQ=HOOKER FOUND
|
||
GETHOK:
|
||
MMTM SP,A1
|
||
MOVE @ENEMIES,A0,L
|
||
JREQ GETHKX ;NOBODY HOME
|
||
GETHOKL:
|
||
MOVE *A0(OID),A1,W ;GET ID
|
||
SRL 4,A1 ;GET RID OF SUBTYPE
|
||
SLL 4,A1
|
||
CMPI HOOKEOID,A1
|
||
JREQ GETHKXX
|
||
GETHOKL1
|
||
MOVE *A0(OSLINK),A0,L
|
||
JRNE GETHOKL
|
||
JRUC GETHKX
|
||
GETHKXX:
|
||
MOVE *A0(OCVECT),A1,L ;GET ID
|
||
CMPI SPLTCOLANI,A1 ;NO DEAD BROADS PLEASE
|
||
JREQ GETHOKL1
|
||
MOVE A1,A1 ;RETURN NE, GOT ONE...
|
||
GETHKX:
|
||
MMFM SP,A1
|
||
RETS
|
||
*
|
||
*GET CLOSE HOOKER
|
||
*A8=CLOWN
|
||
GETCHOK:
|
||
MMTM SP,A1
|
||
MOVE @ENEMIES,A0,L
|
||
JREQ GETCHKX ;NOBODY HOME
|
||
GETCHOKL:
|
||
MOVE *A0(OID),A1,W ;GET ID
|
||
SRL 4,A1 ;GET RID OF SUBTYPE
|
||
SLL 4,A1
|
||
CMPI HOOKEOID,A1
|
||
JRNE GETCHKL
|
||
MOVE *A0(OCVECT),A1,L ;GET ID
|
||
CMPI SPLTCOLANI,A1 ;NO DEAD BROADS PLEASE
|
||
JREQ GETCHKL
|
||
MOVI 30,A5
|
||
MOVI 15,A6
|
||
CALLA XZCHK
|
||
JRC GETCHKXX ;GOT A CLOSE ONE
|
||
GETCHKL:
|
||
MOVE *A0(OSLINK),A0,L
|
||
JRNE GETCHOKL
|
||
JRUC GETCHKX
|
||
GETCHKXX:
|
||
MOVE A1,A1 ;RETURN NE, GOT ONE...
|
||
GETCHKX:
|
||
MMFM SP,A1
|
||
RETS
|
||
*
|
||
*GET DIRECTION FOR CLOWN
|
||
*A1=DELTA X
|
||
*A2=DELTA Z
|
||
*A3=ABS DX
|
||
*A4=ABS DZ
|
||
*A8=OBJECT
|
||
*
|
||
CLWNDIR:
|
||
MOVE A3,A14 ;SAVE ABS DX
|
||
MOVE @CLWNSPD,A3,W ;X VELOCITY
|
||
SLL 8,A3 ;NORMALIZE IT
|
||
MOVE A3,A4
|
||
SRL 1,A4 ;Z VELOCITY
|
||
ABS A1 ;NEGATE FOR NEGATIVE X
|
||
JRN CLNDIR1
|
||
NEG A3
|
||
CLNDIR1:
|
||
ABS A2 ;NEGATE FOR NEGATIVE Z
|
||
JRN CLNDIR2
|
||
NEG A4
|
||
CLNDIR2:
|
||
CMPI 4,A2 ;CLEAR IF REAL CLOSE
|
||
JRHI CLNDIR4
|
||
CLR A4
|
||
CLNDIR4:
|
||
MOVE *A8(OZPOS),A2,W ;IF OFF SCREEN, COME ON BACK
|
||
MOVE @PLZMIN,A1,W
|
||
CMP A1,A2
|
||
JRGE CLNDIR44
|
||
MOVI >1000,A4
|
||
CLNDIR44:
|
||
MOVE A4,*A8(OYVEL),L
|
||
MOVE A4,*A8(OZVEL),L
|
||
CMPI 30,A14 ;DONT CHANGE XVEL IF CLOSE (ANTI STAIRSTEP)
|
||
JRHS CLNDIR5
|
||
MOVE *A8(OXVEL),A14,L
|
||
JREQ CLNDIR5
|
||
MOVE A14,A3
|
||
CLNDIR5:
|
||
MOVE A3,*A8(OXVEL),L ;STORE VELOCITY
|
||
JAUC SHVELFLP
|
||
*
|
||
*CLOWN COLLSION ROUTINE
|
||
*A0 = PTR TO CLOWN OBJECT
|
||
*A8 = PTR TO OBJECT THAT SMASHED HIM
|
||
*
|
||
*HIT BY A BULLET
|
||
*
|
||
CLWNBUL:
|
||
MOVE *A0(OPLINK),A3,L
|
||
MOVE *A3(ETEMP3),A1,W ;DECREMENT HIT COUNT
|
||
CMPI 3,A1
|
||
JRHS CLWNB0
|
||
*MAKE A BLOOD SPLAT
|
||
MMTM SP,A0,A1,A3,A8
|
||
MOVE *A8(OYPOS),A9,W
|
||
MOVE *A0(OID),A11,W
|
||
MOVE A0,A8
|
||
CREATE 0EDH,SPLATBOX
|
||
MMFM SP,A0,A1,A3,A8
|
||
CLWNB0:
|
||
DEC A1
|
||
MOVE A1,*A3(ETEMP3),W
|
||
JRGT CLNBUL0 ;NOT DEAD YET...
|
||
*DEATH BY BULLET
|
||
MOVE *A8(OXVEL),A1,L ;GIVE HIM BULLET VELOCITY
|
||
SRA 2,A1
|
||
MOVE A1,*A0(OXVEL),L
|
||
MOVE *A0(OSHAD),A2,L
|
||
JREQ CLNBL000
|
||
MOVE A1,*A2(OXVEL),L
|
||
CLNBL000
|
||
CALLR CLNCLNUP ;HE IS DEAD
|
||
MOVI CLBDSND,A0 ;MAKE BULLET DIE SOUND
|
||
CALLA ONESND
|
||
MOVI 0EDh,A1
|
||
MOVI CLNDIE1,A7
|
||
CALLA GETPRC ;CREATE A NEW ENEMY DEATH PROCESS
|
||
JRUC CLNCOLX
|
||
CLNBUL0:
|
||
MOVK 12,A2 ;FIND BULLET DIRECTION
|
||
CLNBUL00:
|
||
MOVE *A8(OXVEL+>10),A1,W
|
||
JRNN CLNBUL1
|
||
NEG A2
|
||
CLNBUL1:
|
||
MOVE A0,A8
|
||
MOVE *A8(OXPOS),A1,W ;KNOCK HIM A BIT
|
||
ADD A2,A1
|
||
MOVE A1,*A8(OXPOS),W
|
||
MOVK 10,A0
|
||
CALLA SRAND
|
||
MOVE *A8(OZPOS),A3,W ;HIT HIM IN Z ALSO
|
||
ADD A0,A3
|
||
* JRN CLNBL1A
|
||
MOVE A3,*A8(OZPOS),W
|
||
MOVE *A8(OYPOS),A5,W
|
||
ADD A0,A5
|
||
MOVE A5,*A8(OYPOS),W
|
||
CALLR ZCHK
|
||
*CLNBL1A:
|
||
MOVE *A8(OSHAD),A0,L
|
||
JREQ CLNBUL2
|
||
CALLA SHADCPY
|
||
CLNBUL2:
|
||
MOVI CLBULSND,A0 ;CLOWN BULLET HIT SOUND
|
||
CALLA ONESND
|
||
CLNCOLX:
|
||
CLRC ;TELL COLLISION SCANNER NOT TO DELETE
|
||
RETS
|
||
*
|
||
*CLOWN HIT BY A CAR
|
||
*A0 = PTR TO CLOWN OBJECT
|
||
*A8 = PTR TO OBJECT THAT SMASHED HIM
|
||
*
|
||
CLWNCAR:
|
||
CALLR CARCHK ;CHECK IF PLAYER CAR RAN HIM OVER
|
||
JRNC CLNCOLX
|
||
PUSH A0
|
||
MOVI CLCARSND,A0
|
||
CALLA ONESND
|
||
PULL A0
|
||
JRUC CLWNEXP
|
||
*
|
||
*CHECK IF PLAYER CAR RAN HIM OVER
|
||
*A0 = PTR TO CLOWN OBJECT
|
||
*A8 = PTR TO OBJECT THAT SMASHED HIM
|
||
*CS IF CAR KILLED HIM
|
||
CARCHK
|
||
MOVE *A8(OXVEL),A1,L ;GIVE HIM BULLET VELOCITY
|
||
ABS A1
|
||
CMPI >20000,A1
|
||
JRHS CARCHKX ;CAR GOING FAST DIE
|
||
MOVE *A8(OID),A1,W
|
||
SRL 4,A1
|
||
SLL 4,A1
|
||
CMPI TRAN1OID,A1 ;PORSCHE SPIN CHECK?
|
||
JRNE CARCH1 ;NO, CAN IT
|
||
MOVE *A8(OIMG),A1,L
|
||
CMPI PORSCHE1,A1
|
||
JRNE CARCHKX
|
||
CARCH1
|
||
CLRC
|
||
RETS
|
||
CARCHKX
|
||
SETC
|
||
RETS
|
||
*
|
||
*CLOWN HIT BY ROCKET
|
||
*A0 = PTR TO CLOWN OBJECT
|
||
*A8 = PTR TO OBJECT THAT SMASHED HIM
|
||
*
|
||
CLWNROK:
|
||
CLWNEXP:
|
||
CALLR CLNCLNUP
|
||
MOVI 0EDh,A1
|
||
MOVI CLNDIE,A7
|
||
CALLA GETPRC ;CREATE A NEW ENEMY DEATH PROCESS
|
||
CALLR EXPVEL
|
||
MOVI CLRDSND,A0 ;ROCKET DEATH SOUND
|
||
CALLA ONESND
|
||
JRUC CLNCOLX
|
||
*
|
||
*MISC. DEATH CHORES FOR CLOWN
|
||
*
|
||
CLNCLNUP:
|
||
MOVE @KNAPCNT,A1,W ;DECREMENT CLOWN COUNT
|
||
DEC A1
|
||
MOVE A1,@KNAPCNT,W
|
||
MOVI DUMCOLL,A14
|
||
MOVE A14,*A0(OCVECT),L ;COLLISION POINTER NULL FOR NOW
|
||
MOVE *A8(OID),A11,W ;GET ENEMY ID FOR POINTS
|
||
MOVE A8,A6
|
||
MOVE A0,A8
|
||
CALLA SCRKIL ;SCORE YOUR POINTS
|
||
MOVE *A8(OPLINK),A0,L
|
||
MOVE *A0(ETEMP2),A0,L ;GOT A GIRL?
|
||
JREQ CLNCLN1 ;NO
|
||
CALLA SCRKIL ;4X SCORE FOR GIRL SAVED
|
||
CALLA SCRKIL
|
||
CALLA SCRKIL
|
||
CALLR OIDATA ;GET PLAYER DATA FROM OID
|
||
JRC CLNCLN2 ;NOT A PLAYER KILL
|
||
CALLA PUT10K ;DO A FLOATER
|
||
JRUC CLNCLN2
|
||
CLNCLN1
|
||
CALLR OIDATA ;GET PLAYER DATA FROM OID
|
||
JRC CLNCLN2 ;NOT PLAYER KILL
|
||
CALLA PUT2x5K ;DO A FLOATER
|
||
CLNCLN2
|
||
MOVE *A8(OPLINK),A0,L
|
||
MOVE *A0(ETEMP2),A11,L ;GOT A GIRL?
|
||
|
||
JAUC KILL ;KILL YOUR OLD PROCESS
|
||
*
|
||
*CHANGE OID IN A11 TO PDATA IN A2
|
||
*CS IF NO PLAYER
|
||
OIDATA:
|
||
SRL 4,A11
|
||
SLL 4,A11 ;MASK OFF WEAPON
|
||
ZEXT A11 ;MUST CLEAR HONORABLE HIGH WORD
|
||
CMPI B1OID,A11 ;FIND CORRECT PLAYER DATA AREA
|
||
JRNE OIDATA1
|
||
MOVI P1DATA,A2
|
||
JRUC OIDATA2
|
||
OIDATA1
|
||
CMPI B2OID,A11
|
||
JRNE OIDATA3
|
||
MOVI P2DATA,A2
|
||
OIDATA2
|
||
CLRC
|
||
RETS
|
||
OIDATA3
|
||
SETC
|
||
RETS
|
||
*
|
||
*EXPLOSION VELOCITY
|
||
*A8=OBJECT, A6=SHIT THAT HIT YOU
|
||
*
|
||
EXPVEL:
|
||
MOVE A8,A0
|
||
CALLA DELSHAD
|
||
CALLA SHADST ;MAKE SURE ONLY ONE SHADOW
|
||
CALLA PSTOP ;BLOW DUDE INTO THE AIR
|
||
MOVI >50000,A0 ;GET RANDOM Y VELOCITY
|
||
CALLA RANDU
|
||
ADDI >28000,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
|
||
MOVE A3,*A8(OYVEL),L
|
||
MOVE *A8(OSHAD),A4,L
|
||
JREQ CLNEXP0
|
||
MOVE A0,*A4(OXVEL),L
|
||
CLNEXP0:
|
||
RETS
|
||
*
|
||
*CLOWN SPIN
|
||
*A9 = SPIN ANIMATION TABLE INDEX
|
||
*A10 = SLEEP TIME
|
||
*A11 = DIRECTION
|
||
*
|
||
CLNSPIN:
|
||
MOVE *A8(OFLAGS),A4,W
|
||
CLNSP00:
|
||
ADD A11,A9
|
||
MOVE *A9,A1,L ;GET NEXT ANIMATION
|
||
JRN CLNSPN1 ;REGULAR FRAME
|
||
CMPI >100,A1 ;A CHANGE IN FLIP?
|
||
JRLO CLNSP000 ;YES
|
||
SUBI >1000,A1 ;NO, THIS IS A JUMP - REMOVE BIAS
|
||
ADD A1,A9
|
||
JRUC CLNSP00 ;JUMP AT END
|
||
CLNSP000:
|
||
XOR A1,A4 ;CHANGE YOUR FLAGS FOLKS
|
||
JRUC CLNSP00 ;GET NEXT FRAME BOYS
|
||
CLNSPN1:
|
||
MOVE *A8(OXPOS),A6,W ;SAVE OLD CENTER X,Y COORDS
|
||
MOVE *A8(OSIZEX),A5,W
|
||
SRL 1,A5
|
||
ADD A5,A6
|
||
MOVE *A8(OYPOS),A7,W
|
||
MOVE *A8(OSIZEY),A5,W
|
||
SRL 1,A5
|
||
ADD A5,A7
|
||
CALLA ANI
|
||
MOVE *A8(OSIZEX),A5 ;POSITION NEW CENTER
|
||
SRL 1,A5
|
||
SUB A5,A6
|
||
MOVE *A8(OSIZEY),A5
|
||
SRL 1,A5
|
||
SUB A5,A7
|
||
MOVE A6,*A8(OXPOS),W ;RESTORE COORDS
|
||
MOVE A7,*A8(OYPOS),W
|
||
|
||
MOVE *A8(OYVEL),A0,L ;EFFECT OF GRAVITY
|
||
ADDI >3600,A0
|
||
MOVE A0,*A8(OYVEL),L
|
||
|
||
JRN CLNSPNL ;NEGATIVE Y VELOCITY
|
||
CALLA DFRMGRND ;HAVE WE LANDED?
|
||
JRLE CLNSPNX ;YES
|
||
CLNSPNL:
|
||
MOVE A10,A0 ;VARIABLE SLEEP
|
||
CALLA PRCSLP
|
||
JRUC CLNSPIN
|
||
CLNSPNX:
|
||
RETP
|
||
*
|
||
*HOOKST
|
||
*A8=DYING CLOWN
|
||
*A5,A6,A14 SMASHED
|
||
HOOKST
|
||
MOVI HOOKEOID|15|>00100000,A14 ;HOOKER ID
|
||
MOVE *A8(OYPOS),A6,W
|
||
SLL 16,A6
|
||
MOVE *A8(OXPOS),A5,W
|
||
MOVY A6,A5
|
||
MOVE *A8(OZPOS),A6,W
|
||
JAUC HOOKCOLD ;START A HOOKER UP
|
||
*
|
||
*CLOWN DIE
|
||
*A8= CLOWN
|
||
*
|
||
CLNDIE:
|
||
MOVE A11,A11 ;CARRYING A HOOKER
|
||
JREQ CLNDI0 ;NO
|
||
CALLR HOOKST
|
||
CLNDI0:
|
||
MOVI 2,A10 ;SLEEP TIME
|
||
MOVI 32,A11 ;DIRECTION
|
||
MOVI CLWNBLO,A9 ;DO YOUR BLO UP ANIMATION
|
||
CLNDI00:
|
||
JSRP CLNSPIN ;SPIN 'EM AND CROAK 'EM
|
||
MOVE *A8(OYVEL),A0,L ;CHECK LANDING VELOCITY
|
||
CMPI >40000,A0
|
||
JRLS CLNLND ;WE HAVE LANDED
|
||
MOVI >70000000,A1
|
||
MPYS A1,A0
|
||
NEG A0
|
||
NEG A11 ;REVERSE DIRECTION
|
||
INC A10 ;INCREASE SLEEP TIME
|
||
MOVE A0,*A8(OYVEL),L
|
||
SRAM 1,*A8(OXVEL),L ;CUT DOWN X VEL
|
||
CALLA SHVELCPY
|
||
JRUC CLNDI00
|
||
CLNLND:
|
||
CALLA PSTOP ;STOP THE SUCKER
|
||
MOVE A8,A0 ;OBJECT IN A0 FOR SETZPOS
|
||
CALLA SETZPOS ;ADJUST THE MUTHA
|
||
MOVE *A8(OFLAGS),A0,W ;GET YOUR FLAGS
|
||
BTST B_FLIPH,A0
|
||
JRNE CLNLND1
|
||
BTST B_FLIPV,A0
|
||
JREQ CLNLND1X
|
||
*HOLD LL CONSTANT
|
||
CLNLND2X:
|
||
MOVI CLNDTAB,A9
|
||
CALLR FNDFRM
|
||
CLND2L:
|
||
MOVE *A8(OFLAGS),A4,W
|
||
MOVE *A9+,A1,L ;GET NEXT ANIMATION
|
||
JREQ CLNLNDX ;WERE DONE BOYS
|
||
MOVE *A8(OYPOS),A7,W
|
||
MOVE *A8(OSIZEY),A5,W
|
||
ADD A5,A7
|
||
CALLA ANI
|
||
MOVE *A8(OSIZEY),A5
|
||
SUB A5,A7
|
||
MOVE A7,*A8(OYPOS),W
|
||
SLEEP 4
|
||
JRUC CLND2L
|
||
|
||
CLNLND1:
|
||
BTST B_FLIPV,A0
|
||
JREQ CLNLND2X
|
||
*HOLD LR CONSTANT
|
||
CLNLND1X:
|
||
MOVI CLNDTAB,A9
|
||
CALLR FNDFRM
|
||
CLND1L:
|
||
MOVE *A8(OFLAGS),A4,W
|
||
MOVE *A9+,A1,L ;GET NEXT ANIMATION
|
||
JREQ CLNLNDX ;WERE DONE BOYS
|
||
MOVE *A8(OXPOS),A6,W ;SAVE LR COORDS.
|
||
MOVE *A8(OSIZEX),A5,W
|
||
ADD A5,A6
|
||
MOVE *A8(OYPOS),A7,W
|
||
MOVE *A8(OSIZEY),A5,W
|
||
ADD A5,A7
|
||
CALLA ANI
|
||
MOVE *A8(OSIZEX),A5 ;CALC NEW UL
|
||
SUB A5,A6
|
||
MOVE *A8(OSIZEY),A5
|
||
SUB A5,A7
|
||
MOVE A6,*A8(OXPOS),W ;RESTORE COORDS
|
||
MOVE A7,*A8(OYPOS),W
|
||
SLEEP 4
|
||
JRUC CLND1L
|
||
*
|
||
*FIND YOUR FRAME
|
||
*A8=OBJECT, A9=TABLE OF FRAMES
|
||
*RET: A9 POINTS TO FRAME
|
||
*
|
||
FNDFRM:
|
||
MMTM SP,A0,A1
|
||
FNDFRML:
|
||
MOVE *A8(OIMG),A0,L
|
||
MOVE *A9,A1,L
|
||
CMP A1,A0
|
||
JREQ FNDFRMX
|
||
ADDI 32,A9
|
||
JRUC FNDFRML
|
||
FNDFRMX:
|
||
MMFM SP,A0,A1
|
||
RETS
|
||
*
|
||
*DIEING AFTER SPIN TABLES
|
||
*
|
||
CLNDTAB:
|
||
.LONG cldie1,cldie2,cldie3,cldie4,cldie5,cldie6,cldie7,0
|
||
*
|
||
*FALL DOWN DEAD
|
||
*A8=CLOWN OBJECT
|
||
*
|
||
CLNDIE1:
|
||
MOVI SPLTCOLBOX,A14 ;MAKE 'EM BLEED...
|
||
MOVE A14,*A8(OCVECT),L ;COLLISION POINTER
|
||
MOVE A11,A11 ;CARRYING A HOOKER
|
||
JREQ CLNDIE2 ;NO
|
||
MOVI CLNDROP,A9 ;PUT HER DOWN
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
CALLR HOOKST ;START HER UP
|
||
CLNDIE2
|
||
MOVE A8,A0
|
||
CALLA DELSHAD
|
||
CALLA SHADST ;ONLY ONE SHADOW, PLEASE
|
||
MOVI CLWNDIE,A9 ;DO YOUR DEATH ANIMATION
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
*
|
||
*SINK INTO THE GROUND
|
||
*A8=CLOWN OBJECT
|
||
*
|
||
CLNLNDX:
|
||
MOVI [1,1],A9
|
||
CREATE 0DFh,ESINK ;CREATE THE DEADMAN SINK
|
||
JAUC SUCIDE ;DIE
|
||
*
|
||
*STFOBJ INITIALIZING DATA
|
||
* .LONG OXVEL,OYVEL,OXVAL,OYVAL
|
||
* .WORD OZPOS,OZVEL
|
||
* .LONG OIMG,OZSIZ,OCVECT
|
||
* .WORD OFLAGS,OID
|
||
CLWNINIT
|
||
.LONG 0,0,0,0
|
||
.WORD 0,0
|
||
.LONG clwlk2,LOFZ,CLWNCOL
|
||
.WORD DMAWNZ,CLOWNOID
|
||
.LONG CLWNBLIP
|
||
|
||
CLWNCOL:
|
||
.WORD B1OID+BULLETID
|
||
.LONG CLWNBUL
|
||
.WORD B2OID+BULLETID
|
||
.LONG CLWNBUL
|
||
.WORD B1OID+ROCKETID
|
||
.LONG CLWNROK
|
||
.WORD B2OID+ROCKETID
|
||
.LONG CLWNROK
|
||
.WORD B1OID+EXPLODID
|
||
.LONG CLWNEXP
|
||
.WORD B2OID+EXPLODID
|
||
.LONG CLWNEXP
|
||
.WORD BEOID+EXPLODID
|
||
.LONG CLWNEXP
|
||
.WORD TRAN1OID+CBODYID
|
||
.LONG CLWNCAR
|
||
* .WORD CAR1OID+CBODYID
|
||
* .LONG CLWNEXP
|
||
.WORD 0
|
||
.LONG DUMRTSG
|
||
*
|
||
*ANIMATION TABLES
|
||
*
|
||
***********************************************
|
||
*CLOWN ANIMATIONS
|
||
***********************************************
|
||
*
|
||
*CLOWN WALK
|
||
*
|
||
CLWNWLK:
|
||
.long clwlk2
|
||
.word 5
|
||
.long clwlk3
|
||
.word 5
|
||
.long clwlk4
|
||
.word 5
|
||
.long clwlk5
|
||
.word 5
|
||
.long clwlk6
|
||
.word 5
|
||
.long clwlk7
|
||
.word 5
|
||
CLWNTAB .LONG 0
|
||
*
|
||
*CLOWN RUN
|
||
*
|
||
CLWNRUN:
|
||
.long clrun1
|
||
.word 4
|
||
.long clrun2
|
||
.word 4
|
||
.long clrun3
|
||
.word 4
|
||
.long clrun4
|
||
.word 4
|
||
.long clrun5
|
||
.word 4
|
||
.long clrun6
|
||
.word 4
|
||
.long 0
|
||
CLWNRE:
|
||
*
|
||
*CLOWN HIT
|
||
*
|
||
*CLWNHIT:
|
||
* .long cldie2
|
||
* .word 6
|
||
* .long clhit1
|
||
* .word 6
|
||
* .long 0
|
||
*
|
||
*CLOWN DUCK
|
||
*
|
||
CLWNDUK:
|
||
.long clduk1
|
||
.word 6
|
||
.long clduk3
|
||
.word 6
|
||
.long clduk1
|
||
.word 6
|
||
.long 0
|
||
*
|
||
*CLOWN DIE
|
||
*
|
||
CLWNDIE:
|
||
.long cldie1
|
||
.word 4
|
||
.long cldie2
|
||
.word 4
|
||
.long cldie3
|
||
.word 4
|
||
.long cldie4
|
||
.word 4
|
||
.long cldie5
|
||
.word 4
|
||
.long cldie6
|
||
.word 4
|
||
.long cldie7
|
||
.word 10
|
||
.long 0
|
||
*
|
||
*CLOWN BLOW UP
|
||
*
|
||
CLWNBLO:
|
||
.LONG CLWNBLOE-CLWNBLO+>1000
|
||
.long cldie2
|
||
.long cldie3
|
||
.long cldie4
|
||
.long cldie5
|
||
.long cldie6
|
||
.long cldie7
|
||
.LONG M_FLIPV
|
||
.long cldie6
|
||
.long cldie5
|
||
.long cldie4
|
||
.long cldie3
|
||
.long cldie2
|
||
.long cldie1
|
||
.LONG M_FLIPH
|
||
CLWNBLOE:
|
||
.LONG CLWNBLO-CLWNBLOE+>1000
|
||
*
|
||
*CLOWN KNIFE THROW
|
||
*
|
||
CLWNTHRW:
|
||
.long throw3
|
||
.word 5
|
||
.long throw4
|
||
.word 5
|
||
.long throw5
|
||
.word 5
|
||
.long throw6
|
||
.word 5
|
||
.long throw7
|
||
.word 5
|
||
.long 0
|
||
*
|
||
*CLOWN STANDING STAB
|
||
*
|
||
CLWNSTAB: ;start stab
|
||
.long stab1
|
||
.word 6
|
||
.long stab5
|
||
.word 6
|
||
CLWNSTB2: ;ACTUAL STAB
|
||
.long stab2
|
||
.word 6
|
||
.long stab4
|
||
.word 6
|
||
CLWNSTB3: ;END THE STAB
|
||
.long stab5
|
||
.word 6
|
||
.long 0
|
||
CLWNSTBE: ;REALLY THE END OF STAB
|
||
*
|
||
*CLOWN KNEELING STAB
|
||
*
|
||
CLWNKST1: ;START STAB
|
||
.long stab1
|
||
.word 6
|
||
.long stab5
|
||
.word 6
|
||
.long 0
|
||
CLWNKST2 ;STRIKE
|
||
.long stab7
|
||
.word 6
|
||
.long stab8
|
||
.word 6
|
||
.LONG 0
|
||
CLWNKST3
|
||
.long stab9
|
||
.word 9
|
||
.long stab8
|
||
.word 6
|
||
.long 0
|
||
CLWNKST4: ;WITHDRAW
|
||
.long stab7
|
||
.word 6
|
||
.long stab5
|
||
.word 6
|
||
.long 0
|
||
*
|
||
*CLOWN KILL SUPER STAB ATTACK
|
||
*FOREHAND-BACKHAND
|
||
CLWNSTBF:
|
||
.long kill1
|
||
.word 6
|
||
.long kill3
|
||
.word 6
|
||
.long kill4
|
||
.word 6
|
||
.long kill5
|
||
.word 6
|
||
.LONG 0
|
||
CLWNSTBB:
|
||
.long kill8
|
||
.word 6
|
||
.long kill9
|
||
.word 6
|
||
.long kill10
|
||
.word 6
|
||
.LONG 0
|
||
*OVERHEAD SMASH
|
||
CLWNSTOH:
|
||
.long kill1
|
||
.word 4
|
||
.long kill7
|
||
.word 4
|
||
.long kill11
|
||
.word 4
|
||
.long kill12
|
||
.word 4
|
||
.long kill14
|
||
.word 4
|
||
.long kill11
|
||
.word 4
|
||
* .long kill1
|
||
* .word 4
|
||
.long 0
|
||
*
|
||
*CLOWN LAUGH
|
||
*
|
||
CLWNLAF:
|
||
.long laugh1
|
||
.word 6
|
||
.long laugh2
|
||
.word 6
|
||
.long laugh3
|
||
.word 6
|
||
.long laugh4
|
||
.word 6
|
||
.long laugh5
|
||
.word 6
|
||
.long laugh6
|
||
.word 6
|
||
.long laugh7
|
||
.word 6
|
||
.long laugh8
|
||
.word 6
|
||
.long laugh3
|
||
.word 6
|
||
.long laugh8
|
||
.word 6
|
||
.long laugh7
|
||
.word 6
|
||
.long laugh6
|
||
.word 6
|
||
.long laugh5
|
||
.word 6
|
||
.long 0
|
||
*
|
||
*CLOWN JUMP
|
||
*
|
||
CLWNJMP:
|
||
.long cljmp6
|
||
.word 4
|
||
.long cljmp3
|
||
.word 4
|
||
.long cljmp7
|
||
.word 4
|
||
.long cljmp8
|
||
.word 4
|
||
.long cljmp9
|
||
.word 4
|
||
CLWNJMP0:
|
||
.long cljmp10
|
||
.word 4
|
||
.long 0
|
||
*CLWNJMP1:
|
||
* .long cljmp11
|
||
* .word 4
|
||
* .long cljmp12
|
||
* .word 4
|
||
* .long 0
|
||
*
|
||
*clown and hooker stuff
|
||
*
|
||
*hooker fighting
|
||
*
|
||
HKFIGHT:
|
||
.long hkfgt8
|
||
.word 4
|
||
.long hkfgt7
|
||
.word 4
|
||
.long hkfgt8
|
||
.word 4
|
||
.long hkfgt7
|
||
.word 4
|
||
.long hkfgt5
|
||
.word 4
|
||
.long hkfgt6
|
||
.word 4
|
||
.long hkfgt4
|
||
.word 4
|
||
.long hkfgt6
|
||
.word 4
|
||
.long hkfgt5
|
||
.word 4
|
||
.long hkfgt6
|
||
.word 4
|
||
.long hkfgt4
|
||
.word 4
|
||
.long hkfgt6
|
||
.word 4
|
||
.long hkfgt5
|
||
.word 4
|
||
.long hkfgt7
|
||
.word 4
|
||
.long hkfgt8
|
||
.word 4
|
||
.long 0
|
||
*
|
||
*clown lift up hooker
|
||
*
|
||
CLNLIFT:
|
||
.long lift1
|
||
.word 6
|
||
.long lift2
|
||
.word 6
|
||
.long lift3
|
||
.word 6
|
||
.long lift4
|
||
.word 6
|
||
.long 0
|
||
*
|
||
*clown carry hooker
|
||
*
|
||
CLNCARY:
|
||
.long carry1
|
||
.word 5
|
||
.long carry2
|
||
.word 5
|
||
.long carry3
|
||
.word 5
|
||
.long carry4
|
||
.word 5
|
||
.long carry5
|
||
.word 5
|
||
.long carry6
|
||
.word 5
|
||
.long carry7
|
||
.word 5
|
||
.long 0
|
||
*
|
||
*hooker die
|
||
*
|
||
HKDIE:
|
||
.long hkdie1
|
||
.word 4
|
||
.long hkdie2
|
||
.word 4
|
||
.long hkdie3
|
||
.word 4
|
||
.long hkdie4
|
||
.word 4
|
||
.long hkdie5
|
||
.word 4
|
||
.long hkdie6
|
||
.word 4
|
||
.long 0
|
||
*
|
||
CLNDROP
|
||
.long lift4
|
||
.word 2
|
||
.long lift3
|
||
.word 3
|
||
.long 0
|
||
|
||
*
|
||
*CLOWN CRIME SCENE
|
||
*
|
||
CLWNCRM1:
|
||
move @(WORLDTLX+16),A0,W
|
||
addi 150,A0
|
||
move @PLYMIN,A1,W
|
||
addi 5,A1
|
||
sll 16,A1
|
||
movx A0,A1
|
||
clr A6
|
||
movi CLWNINIT,A14
|
||
calla ESINITLL
|
||
clr A0
|
||
move A0,*A8(OBLIPIMG),L
|
||
|
||
SOUND1 HYELSND
|
||
calla PSTOP
|
||
calla NOYFLP
|
||
movi >1C000,A0
|
||
move A0,*A8(OXVEL),L
|
||
|
||
movi CLNLIFT,A9
|
||
movk 1,A1
|
||
jsrp FRANIM
|
||
SOUND1 CLAFSND
|
||
movi CLNCARY,A9
|
||
movk 1,A1
|
||
jsrp FRANIM
|
||
movi CLNCARY,A9
|
||
movk 1,A1
|
||
jsrp FRANIM
|
||
CRM1X:
|
||
MOVI ENEMIES,A1
|
||
MOVE A8,A0
|
||
CALLA DELSUPP
|
||
move *A8(OPAL),A1,W
|
||
move A1,@CRIMEPAL,W
|
||
CALLA DELSOBJ
|
||
retp
|
||
|
||
.END
|
||
|