nba-jam/PLYR3.ASM

3695 lines
71 KiB
NASM
Executable File

**************************************************************
*
* Owner: TURMELL
*
* Software: Shawn Liptak, Mark Turmell
* Initiated: 9/17/92
*
* Modified: Mark Turmell, 1/6/93 -Split from PLYR.asm
*
* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC.
*
*.Last mod - 3/23/93 15:13
**************************************************************
.file "plyr3.asm"
.title "basketball player code"
.width 132
.option b,d,l,t
.mnolist
.include "hotspot.tbl"
.include "mproc.equ" ;Mproc equates
.include "disp.equ" ;Display proc equates
.include "gsp.equ" ;Gsp asm equates
.include "sys.equ"
.include "audit.equ"
.include "world.equ" ;Court-world defs
.include "game.equ"
.include "macros.hdr" ;Macros
.asg 0,SEQT
.include "plyr.equ"
.include "imgtbl7.glo"
.include "imgtbl1.glo"
.include "plyrhd.glo"
.include "plyrhd2.glo"
.include "plyrhd5.glo"
.include "HOTSPOT.GLO"
.include "ball.tbl"
.include "ballshad.tbl"
.include "ballshad.glo"
;sounds external
;symbols externally defined
.ref gug1,BEdwrd1
.ref pup_court,pup_aba
.ref anipt_getsclxy
.ref BAKMODS,BGND_UD1
; .ref snd_play1ovr
.ref IRQSKYE
.ref dpageflip
.ref GAMSTATE
.ref COLCYC
.ref system_savegame,system_restoregame
.ref tvpanelon
.ref RNDRNG0
.ref READ_DIP
.ref pal_getf
;From plyrat3.asm
.ref sd_h
; .ref RA_H
.ref Blaylock_h
.ref Ssmith_h
.ref Knorman_h
; .ref Henderso_h
.ref Barros_h
.ref Montross_h
.ref Radja_h
.ref Curry_h
.ref Zidek_h
.ref Kerr_h
.ref Thill_h
.ref Cmills_h
.ref Phills_h
.ref Kidd_h
.ref Pjones_h
.ref Rauf_h
.ref Pack_h
.ref Mcdyes_h
.ref Ghill_h
.ref Tmills_h
.ref Thorpe_h
.ref Sprewell_h
.ref Jsmith_h
.ref Cassel_h
.ref Ddavis_h
.ref Mckee_h
.ref Vaught_h
.ref Rrogers_h
.ref Lmurray_h
.ref Richardson_h
.ref Bbarry_h
.ref Vanexel_h
.ref Ceballos_h
.ref Ejones_h
.ref Bowens_h
.ref Grobinson_h
.ref EMurdock_h
.ref Respert_h
; .ref Rooks_h
.ref Garnett_h
.ref Gilliam_h
.ref Obannon_h
.ref Dscott_h
.ref Wright_h
.ref Stackhouse_h
.ref Wperson_h
.ref Finley_h
.ref Strickland_h
.ref Sabonis_h
.ref Bwilliams_h
.ref Childress_h
.ref Wwilliams_h
.ref Bgrant_h
.ref Marciulonis_h
.ref Ajohnson_h
.ref Sford_h
.ref Crogers_h
.ref Stoudamire_h
.ref Anthony_h
; .ref Gattison_h
.ref Breeves_h
.ref Jhoward_h
.ref McCloud_h
.ref Houston_h
.ref Muresan_h
.ref KEdwards_h
.ref Fox_h
.ref Ferry_h
.ref Mullin_h
.ref Longley_h
.ref MJackson_h
.ref Danilovic_h
.ref OMiller_h
.ref Delnegro_h
.ref Douglas_h
.ref WAnderson_h
.ref TMurray_h
.ref Koncak_h
.ref Rose_h
.ref Brandon_h
; .ref Coles_h
.ref DHarper_h
.ref Edney_h
.ref VMaxwell_h
;From plyrat2.asm
.ref Laetner_h
.ref Hawkins_h
.ref LJohnson_h
.ref Divac_h
.ref KMalone_h
.ref Stockton_h
.ref Ewing_h
.ref Seikaly_h
.ref Miller_h
.ref Mutumbo_h
.ref Oakley_h
.ref Olajuwon_h
.ref Rice_h
.ref DRobinson_h
.ref Schrempf_h
.ref Smith_h
.ref Tisdale_h
.ref Kemp_h
.ref Pippen_h
.ref Gill_h
.ref Mullin_h
.ref Person_h
.ref Augmon_h
.ref Benjamin_h
.ref Coleman_h
.ref Drexler_h
; .ref DEllis_h
.ref Elliot_h
.ref Hardaway_h
.ref HCGrant_h
.ref Hornacek_h
.ref Manning_h
.ref Cow_h
.ref fifi_h
.ref FIFI_F
.ref Alien_h
.ref Mel_h
.ref Mik_h
.ref Joe_h
.ref Ang_h
.ref Lis_h
.ref Guido_h
.ref Ber_h
.ref Chk_h
.ref Fat_h
.ref Fra_h
.ref Gor_h
.ref Gre_h
.ref Old_h
.ref Pig_h
.ref Wiz_h
.ref eric_h
.ref madball_h
.ref jackjr_h
.ref kim_h
.ref clown_h
.ref ape_h
.ref cheech_h
.ref mar_h
.ref bardo_h
.ref oursler_h
.ref mxv_h
.ref eddie_h
.ref dim_h
.ref mike_h
.ref sean_h
.ref bud_h
.ref BUD_F
.ref bardo_h
.ref willy_h
.ref plyrobj_t
.ref BOON_F,TOBIAS_F,OURSL_F
.ref EDDIE_F
;symbols defined in this file
.def NBALL101,NBALL601,ABALL101
.def plr_heads_small,plr_heads_small_end
.def SM_HEADS_CNT
;uninitialized ram definitions
; .bss cycram ,9*16
; .bss clipbits ,32 ;Bit set for each clip # shown
;
; BSSX clipsrunning ,32
BSSX ditch_meter,16
;equates for this file
.text
#*******************************
* do ball animation
SUBR do_ball_ani
move *a8(OZPOS),a2 ;No
subi CZMIN-32,a2 ;-Base -32 to go 1 smaller @ crt top
jrge #zge
clr a2
#zge
srl 5,a2
move *a13(ball_zsznum),a4
sub a2,a4
jrne #newani ;Same Z range? br=no
dsj a10,#skipa
#newani
move a2,*a13(ball_zsznum)
sll 5,a2
move a2,a3
move *a8(OPAL),a1 ;Chk for correct palette
sll 32-8,a1
srl 32-8-5,a1
.ref PALRAM
addi PALRAM-32,a1
move *a1,a1,L
movi BBALL_P,a0 ;=reg ball pal
move *a13(ball_onfire),a14 ;Is someone on-fire?
jrz #nofpal ; br=no
addi #anif_t,a2
move @balltmshotcnt,a14 ;Is it a team on-fire?
subk TMFIRE_MINCNT,a14
jrlt #notd ; br=no
movi BBALFLA_P,a0 ;=blue ball pal
jruc #notd
#nofpal
addi #ani_t,a2
move @pup_aba,a14
jrz #notd
movi ABALL_P,a0 ;=reg ball pal
addi #ania_t-#ani_t,a2
#notd
cmp a1,a0 ;Does ball have the right palette?
jreq #gotp ; br=yes
calla pal_getf
move a0,*a8(OPAL) ;Set correct palette
#gotp
move *a13(ball_ani1st_p),a1,L
move *a2,a2,L
cmp a1,a2
jreq #sameseq
addi #shad_t,a3 ;Set new shadow img
move *a3,a0,L
move a0,*a9(OIMG),L
move *a0,a14,L
move a14,*a9(OSIZE),L
move *a0(ISAG),*a9(OSAG),L
move *a0(IANIOFFY),a14
neg a14
move a14,*a9(OYPOS)
move a2,*a13(ball_ani1st_p),L
jruc #newz
#sameseq
move *a13(ball_onfire),a14
jrnz #movin ;On fire?
move *a8(OXVEL),a0,L
abs a0
srl 2,a0
jrnz #movin
movk 5,a10
move *a8(OZVEL),a0,L
abs a0
srl 2,a0
jrz #skipa
#movin
move *a13(ball_ani_p),a2,L
move *a2+,a0,L ;*Next img
jrnz #notend
move a1,a2
#newz
move *a2+,a0,L ;*1st img
#notend
move *a2+,a10
move a2,*a13(ball_ani_p),L
move a0,*a8(OIMG),L ;Set new ball img
movb *a0(ICTRL+7),*a8(OCTRL+7) ;Set 5 z comp & 3 bpp bits
move *a0,a2,L
move a2,*a8(OSIZE),L
move *a0(ISAG),*a8(OSAG),L
move *a0(IANIOFFX),a2
move *a0(IANIOFFY),*a13(ball_aniy)
move *a13(ball_anix),a1
move a2,*a13(ball_anix)
move *a8(OXPOS),a0
add a1,a0 ;Old ani X
sub a2,a0 ;-New ani X
move a0,*a8(OXPOS)
#skipa
rets
#ani_t
.long #b1_l
.long #b1_l,#b1_l,#b1_l,#b2_l,#b2_l,#b3_l
.long #b3_l,#b4_l,#b5_l,#b6_l,#b7_l
.long #b8_l,#b8_l,#b8_l,#b8_l,#b8_l,#b8_l
; .long #b1_l
;
; .long #b2_l,#b2_l,#b3_l,#b3_l,#b4_l,#b4_l
; .long #b5_l,#b6_l,#b7_l,#b8_l,#b9_l
;
; .long #b10_l,#b10_l,#b10_l,#b10_l,#b10_l,#b10_l
.asg 2,D
#b1_l
LWLWLWLW NBALL101,D,NBALL102,D,NBALL103,D,NBALL104,D
LWLWLWLW NBALL105,D,NBALL106,D,NBALL107,D,NBALL108,D
LWLWLWLW NBALL109,D,NBALL110,D,NBALL111,D,NBALL112,D
LWLWLWLW NBALL113,D,NBALL114,D,NBALL115,D,NBALL116,D
LWLWLWLW NBALL117,D,NBALL118,D,NBALL119,D,NBALL120,D
LWLWLWLW NBALL121,D,NBALL122,D,NBALL123,D,NBALL124,D
LWLWLWLW NBALL125,D,NBALL126,D,NBALL127,D,NBALL128,D
LWLW NBALL129,D,NBALL130,D
.long 0
#b2_l
LWLWLWLW NBALL201,D,NBALL202,D,NBALL203,D,NBALL204,D
LWLWLWLW NBALL205,D,NBALL206,D,NBALL207,D,NBALL208,D
LWLWLWLW NBALL209,D,NBALL210,D,NBALL211,D,NBALL212,D
LWLWLWLW NBALL213,D,NBALL214,D,NBALL215,D,NBALL216,D
LWLWLWLW NBALL217,D,NBALL218,D,NBALL219,D,NBALL220,D
LWLWLWLW NBALL221,D,NBALL222,D,NBALL223,D,NBALL224,D
LWLWLWLW NBALL225,D,NBALL226,D,NBALL227,D,NBALL228,D
LWLW NBALL229,D,NBALL230,D
.long 0
#b3_l
LWLWLWLW NBALL301,D,NBALL302,D,NBALL303,D,NBALL304,D
LWLWLWLW NBALL305,D,NBALL306,D,NBALL307,D,NBALL308,D
LWLWLWLW NBALL309,D,NBALL310,D,NBALL311,D,NBALL312,D
LWLWLWLW NBALL313,D,NBALL314,D,NBALL315,D,NBALL316,D
LWLWLWLW NBALL317,D,NBALL318,D,NBALL319,D,NBALL320,D
LWLWLWLW NBALL321,D,NBALL322,D,NBALL323,D,NBALL324,D
LWLWLWLW NBALL325,D,NBALL326,D,NBALL327,D,NBALL328,D
LWLW NBALL329,D,NBALL330,D
.long 0
#b4_l
LWLWLWLW NBALL401,D,NBALL402,D,NBALL403,D,NBALL404,D
LWLWLWLW NBALL405,D,NBALL406,D,NBALL407,D,NBALL408,D
LWLWLWLW NBALL409,D,NBALL410,D,NBALL411,D,NBALL412,D
LWLWLWLW NBALL413,D,NBALL414,D,NBALL415,D,NBALL416,D
LWLWLWLW NBALL417,D,NBALL418,D,NBALL419,D,NBALL420,D
LWLWLWLW NBALL421,D,NBALL422,D,NBALL423,D,NBALL424,D
LWLWLWLW NBALL425,D,NBALL426,D,NBALL427,D,NBALL428,D
LWLW NBALL429,D,NBALL430,D
.long 0
#b5_l
LWLWLWLW NBALL501,D,NBALL502,D,NBALL503,D,NBALL504,D
LWLWLWLW NBALL505,D,NBALL506,D,NBALL507,D,NBALL508,D
LWLWLWLW NBALL509,D,NBALL510,D,NBALL511,D,NBALL512,D
LWLWLWLW NBALL513,D,NBALL514,D,NBALL515,D,NBALL516,D
LWLWLWLW NBALL517,D,NBALL518,D,NBALL519,D,NBALL520,D
LWLWLWLW NBALL521,D,NBALL522,D,NBALL523,D,NBALL524,D
LWLWLWLW NBALL525,D,NBALL526,D,NBALL527,D,NBALL528,D
LWLW NBALL529,D,NBALL530,D
.long 0
#b6_l
LWLWLWLW NBALL601,D,NBALL602,D,NBALL603,D,NBALL604,D
LWLWLWLW NBALL605,D,NBALL606,D,NBALL607,D,NBALL608,D
LWLWLWLW NBALL609,D,NBALL610,D,NBALL611,D,NBALL612,D
LWLWLWLW NBALL613,D,NBALL614,D,NBALL615,D,NBALL616,D
LWLWLWLW NBALL617,D,NBALL618,D,NBALL619,D,NBALL620,D
LWLWLWLW NBALL621,D,NBALL622,D,NBALL623,D,NBALL624,D
LWLWLWLW NBALL625,D,NBALL626,D,NBALL627,D,NBALL628,D
LWLW NBALL629,D,NBALL630,D
.long 0
#b7_l
LWLWLWLW NBALL701,D,NBALL702,D,NBALL703,D,NBALL704,D
LWLWLWLW NBALL705,D,NBALL706,D,NBALL707,D,NBALL708,D
LWLWLWLW NBALL709,D,NBALL710,D,NBALL711,D,NBALL712,D
LWLWLWLW NBALL713,D,NBALL714,D,NBALL715,D,NBALL716,D
LWLWLWLW NBALL717,D,NBALL718,D,NBALL719,D,NBALL720,D
LWLWLWLW NBALL721,D,NBALL722,D,NBALL723,D,NBALL724,D
LWLWLWLW NBALL725,D,NBALL726,D,NBALL727,D,NBALL728,D
LWLW NBALL729,D,NBALL730,D
.long 0
#b8_l
LWLWLWLW NBALL801,D,NBALL802,D,NBALL803,D,NBALL804,D
LWLWLWLW NBALL805,D,NBALL806,D,NBALL807,D,NBALL808,D
LWLWLWLW NBALL809,D,NBALL810,D,NBALL811,D,NBALL812,D
LWLWLWLW NBALL813,D,NBALL814,D,NBALL815,D,NBALL816,D
LWLWLWLW NBALL817,D,NBALL818,D,NBALL819,D,NBALL820,D
LWLWLWLW NBALL821,D,NBALL822,D,NBALL823,D,NBALL824,D
LWLWLWLW NBALL825,D,NBALL826,D,NBALL827,D,NBALL828,D
LWLW NBALL829,D,NBALL830,D
.long 0
;;#b9_l
;; LWLWLWLW NBALL901,D,NBALL902,D,NBALL903,D,NBALL904,D
;; LWLWLWLW NBALL905,D,NBALL906,D,NBALL907,D,NBALL908,D
;; LWLWLWLW NBALL909,D,NBALL910,D,NBALL911,D,NBALL912,D
;; LWLWLWLW NBALL913,D,NBALL914,D,NBALL915,D,NBALL916,D
;; LWLWLWLW NBALL917,D,NBALL918,D,NBALL919,D,NBALL920,D
;; LWLWLWLW NBALL921,D,NBALL922,D,NBALL923,D,NBALL924,D
;; LWLWLWLW NBALL925,D,NBALL926,D,NBALL927,D,NBALL928,D
;; LWLW NBALL929,D,NBALL930,D
;; .long 0
;;
;;#b10_l
;; LWLWLWLW NBALL1001,D,NBALL1002,D,NBALL1003,D,NBALL1004,D
;; LWLWLWLW NBALL1005,D,NBALL1006,D,NBALL1007,D,NBALL1008,D
;; LWLWLWLW NBALL1009,D,NBALL1010,D,NBALL1011,D,NBALL1012,D
;; LWLWLWLW NBALL1013,D,NBALL1014,D,NBALL1015,D,NBALL1016,D
;; LWLWLWLW NBALL1017,D,NBALL1018,D,NBALL1019,D,NBALL1020,D
;; LWLWLWLW NBALL1021,D,NBALL1022,D,NBALL1023,D,NBALL1024,D
;; LWLWLWLW NBALL1025,D,NBALL1026,D,NBALL1027,D,NBALL1028,D
;; LWLW NBALL1029,D,NBALL1030,D
;; .long 0
#anif_t
.long #bf1_l
.long #bf1_l,#bf1_l,#bf1_l,#bf2_l,#bf2_l,#bf3_l
.long #bf3_l,#bf4_l,#bf5_l,#bf6_l,#bf7_l
.long #bf8_l,#bf8_l,#bf8_l,#bf8_l,#bf8_l,#bf8_l
; .long #bf1_l
;
; .long #bf2_l,#bf2_l,#bf3_l,#bf3_l,#bf4_l,#bf4_l
; .long #bf5_l,#bf6_l,#bf7_l,#bf8_l,#bf9_l
;
; .long #bf10_l,#bf10_l,#bf10_l,#bf10_l,#bf10_l,#bf10_l
.asg 2,D
#bf1_l
LWLWLWLW FBALL101,D,FBALL102,D,FBALL103,D,FBALL104,D
LWLWLWLW FBALL105,D,FBALL106,D,FBALL107,D,FBALL108,D
LWLWLWLW FBALL109,D,FBALL110,D,FBALL111,D,FBALL112,D
LWLWLWLW FBALL113,D,FBALL114,D,FBALL115,D,FBALL116,D
LWLWLWLW FBALL117,D,FBALL118,D,FBALL119,D,FBALL120,D
LWLWLWLW FBALL121,D,FBALL122,D,FBALL123,D,FBALL124,D
LWLWLWLW FBALL125,D,FBALL126,D,FBALL127,D,FBALL128,D
LWLW FBALL129,D,FBALL130,D
.long 0
#bf2_l
LWLWLWLW FBALL201,D,FBALL202,D,FBALL203,D,FBALL204,D
LWLWLWLW FBALL205,D,FBALL206,D,FBALL207,D,FBALL208,D
LWLWLWLW FBALL209,D,FBALL210,D,FBALL211,D,FBALL212,D
LWLWLWLW FBALL213,D,FBALL214,D,FBALL215,D,FBALL216,D
LWLWLWLW FBALL217,D,FBALL218,D,FBALL219,D,FBALL220,D
LWLWLWLW FBALL221,D,FBALL222,D,FBALL223,D,FBALL224,D
LWLWLWLW FBALL225,D,FBALL226,D,FBALL227,D,FBALL228,D
LWLW FBALL229,D,FBALL230,D
.long 0
#bf3_l
LWLWLWLW FBALL301,D,FBALL302,D,FBALL303,D,FBALL304,D
LWLWLWLW FBALL305,D,FBALL306,D,FBALL307,D,FBALL308,D
LWLWLWLW FBALL309,D,FBALL310,D,FBALL311,D,FBALL312,D
LWLWLWLW FBALL313,D,FBALL314,D,FBALL315,D,FBALL316,D
LWLWLWLW FBALL317,D,FBALL318,D,FBALL319,D,FBALL320,D
LWLWLWLW FBALL321,D,FBALL322,D,FBALL323,D,FBALL324,D
LWLWLWLW FBALL325,D,FBALL326,D,FBALL327,D,FBALL328,D
LWLW FBALL329,D,FBALL330,D
.long 0
#bf4_l
LWLWLWLW FBALL401,D,FBALL402,D,FBALL403,D,FBALL404,D
LWLWLWLW FBALL405,D,FBALL406,D,FBALL407,D,FBALL408,D
LWLWLWLW FBALL409,D,FBALL410,D,FBALL411,D,FBALL412,D
LWLWLWLW FBALL413,D,FBALL414,D,FBALL415,D,FBALL416,D
LWLWLWLW FBALL417,D,FBALL418,D,FBALL419,D,FBALL420,D
LWLWLWLW FBALL421,D,FBALL422,D,FBALL423,D,FBALL424,D
LWLWLWLW FBALL425,D,FBALL426,D,FBALL427,D,FBALL428,D
LWLW FBALL429,D,FBALL430,D
.long 0
#bf5_l
LWLWLWLW FBALL501,D,FBALL502,D,FBALL503,D,FBALL504,D
LWLWLWLW FBALL505,D,FBALL506,D,FBALL507,D,FBALL508,D
LWLWLWLW FBALL509,D,FBALL510,D,FBALL511,D,FBALL512,D
LWLWLWLW FBALL513,D,FBALL514,D,FBALL515,D,FBALL516,D
LWLWLWLW FBALL517,D,FBALL518,D,FBALL519,D,FBALL520,D
LWLWLWLW FBALL521,D,FBALL522,D,FBALL523,D,FBALL524,D
LWLWLWLW FBALL525,D,FBALL526,D,FBALL527,D,FBALL528,D
LWLW FBALL529,D,FBALL530,D
.long 0
#bf6_l
LWLWLWLW FBALL601,D,FBALL602,D,FBALL603,D,FBALL604,D
LWLWLWLW FBALL605,D,FBALL606,D,FBALL607,D,FBALL608,D
LWLWLWLW FBALL609,D,FBALL610,D,FBALL611,D,FBALL612,D
LWLWLWLW FBALL613,D,FBALL614,D,FBALL615,D,FBALL616,D
LWLWLWLW FBALL617,D,FBALL618,D,FBALL619,D,FBALL620,D
LWLWLWLW FBALL621,D,FBALL622,D,FBALL623,D,FBALL624,D
LWLWLWLW FBALL625,D,FBALL626,D,FBALL627,D,FBALL628,D
LWLW FBALL629,D,FBALL630,D
.long 0
#bf7_l
LWLWLWLW FBALL701,D,FBALL702,D,FBALL703,D,FBALL704,D
LWLWLWLW FBALL705,D,FBALL706,D,FBALL707,D,FBALL708,D
LWLWLWLW FBALL709,D,FBALL710,D,FBALL711,D,FBALL712,D
LWLWLWLW FBALL713,D,FBALL714,D,FBALL715,D,FBALL716,D
LWLWLWLW FBALL717,D,FBALL718,D,FBALL719,D,FBALL720,D
LWLWLWLW FBALL721,D,FBALL722,D,FBALL723,D,FBALL724,D
LWLWLWLW FBALL725,D,FBALL726,D,FBALL727,D,FBALL728,D
LWLW FBALL729,D,FBALL730,D
.long 0
#bf8_l
LWLWLWLW FBALL801,D,FBALL802,D,FBALL803,D,FBALL804,D
LWLWLWLW FBALL805,D,FBALL806,D,FBALL807,D,FBALL808,D
LWLWLWLW FBALL809,D,FBALL810,D,FBALL811,D,FBALL812,D
LWLWLWLW FBALL813,D,FBALL814,D,FBALL815,D,FBALL816,D
LWLWLWLW FBALL817,D,FBALL818,D,FBALL819,D,FBALL820,D
LWLWLWLW FBALL821,D,FBALL822,D,FBALL823,D,FBALL824,D
LWLWLWLW FBALL825,D,FBALL826,D,FBALL827,D,FBALL828,D
LWLW FBALL829,D,FBALL830,D
.long 0
;;#bf9_l
;; LWLWLWLW FBALL901,D,FBALL902,D,FBALL903,D,FBALL904,D
;; LWLWLWLW FBALL905,D,FBALL906,D,FBALL907,D,FBALL908,D
;; LWLWLWLW FBALL909,D,FBALL910,D,FBALL911,D,FBALL912,D
;; LWLWLWLW FBALL913,D,FBALL914,D,FBALL915,D,FBALL916,D
;; LWLWLWLW FBALL917,D,FBALL918,D,FBALL919,D,FBALL920,D
;; LWLWLWLW FBALL921,D,FBALL922,D,FBALL923,D,FBALL924,D
;; LWLWLWLW FBALL925,D,FBALL926,D,FBALL927,D,FBALL928,D
;; LWLW FBALL929,D,FBALL930,D
;; .long 0
;;
;;#bf10_l
;; LWLWLWLW FBALL1001,D,FBALL1002,D,FBALL1003,D,FBALL1004,D
;; LWLWLWLW FBALL1005,D,FBALL1006,D,FBALL1007,D,FBALL1008,D
;; LWLWLWLW FBALL1009,D,FBALL1010,D,FBALL1011,D,FBALL1012,D
;; LWLWLWLW FBALL1013,D,FBALL1014,D,FBALL1015,D,FBALL1016,D
;; LWLWLWLW FBALL1017,D,FBALL1018,D,FBALL1019,D,FBALL1020,D
;; LWLWLWLW FBALL1021,D,FBALL1022,D,FBALL1023,D,FBALL1024,D
;; LWLWLWLW FBALL1025,D,FBALL1026,D,FBALL1027,D,FBALL1028,D
;; LWLW FBALL1029,D,FBALL1030,D
;; .long 0
#ania_t
.long #ba1_l
.long #ba1_l,#ba1_l,#ba1_l,#ba2_l,#ba2_l,#ba3_l
.long #ba3_l,#ba4_l,#ba5_l,#ba6_l,#ba7_l
.long #ba8_l,#ba8_l,#ba8_l,#ba8_l,#ba8_l,#ba8_l
; .long #ba1_l
;
; .long #ba2_l,#ba2_l,#ba3_l,#ba3_l,#ba4_l,#ba4_l
; .long #ba5_l,#ba6_l,#ba7_l,#ba8_l,#ba9_l
;
; .long #ba10_l,#ba10_l,#ba10_l,#ba10_l,#ba10_l,#ba10_l
.asg 2,D
#ba1_l
LWLWLWLW ABALL101,D,ABALL102,D,ABALL103,D,ABALL104,D
LWLWLWLW ABALL105,D,ABALL106,D,ABALL107,D,ABALL108,D
LWLWLWLW ABALL109,D,ABALL110,D,ABALL111,D,ABALL112,D
LWLWLWLW ABALL113,D,ABALL114,D,ABALL115,D,ABALL116,D
LWLWLWLW ABALL117,D,ABALL118,D,ABALL119,D,ABALL120,D
LWLWLWLW ABALL121,D,ABALL122,D,ABALL123,D,ABALL124,D
LWLWLWLW ABALL125,D,ABALL126,D,ABALL127,D,ABALL128,D
LWLW ABALL129,D,ABALL130,D
.long 0
#ba2_l
LWLWLWLW ABALL201,D,ABALL202,D,ABALL203,D,ABALL204,D
LWLWLWLW ABALL205,D,ABALL206,D,ABALL207,D,ABALL208,D
LWLWLWLW ABALL209,D,ABALL210,D,ABALL211,D,ABALL212,D
LWLWLWLW ABALL213,D,ABALL214,D,ABALL215,D,ABALL216,D
LWLWLWLW ABALL217,D,ABALL218,D,ABALL219,D,ABALL220,D
LWLWLWLW ABALL221,D,ABALL222,D,ABALL223,D,ABALL224,D
LWLWLWLW ABALL225,D,ABALL226,D,ABALL227,D,ABALL228,D
LWLW ABALL229,D,ABALL230,D
.long 0
#ba3_l
LWLWLWLW ABALL301,D,ABALL302,D,ABALL303,D,ABALL304,D
LWLWLWLW ABALL305,D,ABALL306,D,ABALL307,D,ABALL308,D
LWLWLWLW ABALL309,D,ABALL310,D,ABALL311,D,ABALL312,D
LWLWLWLW ABALL313,D,ABALL314,D,ABALL315,D,ABALL316,D
LWLWLWLW ABALL317,D,ABALL318,D,ABALL319,D,ABALL320,D
LWLWLWLW ABALL321,D,ABALL322,D,ABALL323,D,ABALL324,D
LWLWLWLW ABALL325,D,ABALL326,D,ABALL327,D,ABALL328,D
LWLW ABALL329,D,ABALL330,D
.long 0
#ba4_l
LWLWLWLW ABALL401,D,ABALL402,D,ABALL403,D,ABALL404,D
LWLWLWLW ABALL405,D,ABALL406,D,ABALL407,D,ABALL408,D
LWLWLWLW ABALL409,D,ABALL410,D,ABALL411,D,ABALL412,D
LWLWLWLW ABALL413,D,ABALL414,D,ABALL415,D,ABALL416,D
LWLWLWLW ABALL417,D,ABALL418,D,ABALL419,D,ABALL420,D
LWLWLWLW ABALL421,D,ABALL422,D,ABALL423,D,ABALL424,D
LWLWLWLW ABALL425,D,ABALL426,D,ABALL427,D,ABALL428,D
LWLW ABALL429,D,ABALL430,D
.long 0
#ba5_l
LWLWLWLW ABALL501,D,ABALL502,D,ABALL503,D,ABALL504,D
LWLWLWLW ABALL505,D,ABALL506,D,ABALL507,D,ABALL508,D
LWLWLWLW ABALL509,D,ABALL510,D,ABALL511,D,ABALL512,D
LWLWLWLW ABALL513,D,ABALL514,D,ABALL515,D,ABALL516,D
LWLWLWLW ABALL517,D,ABALL518,D,ABALL519,D,ABALL520,D
LWLWLWLW ABALL521,D,ABALL522,D,ABALL523,D,ABALL524,D
LWLWLWLW ABALL525,D,ABALL526,D,ABALL527,D,ABALL528,D
LWLW ABALL529,D,ABALL530,D
.long 0
#ba6_l
LWLWLWLW ABALL601,D,ABALL602,D,ABALL603,D,ABALL604,D
LWLWLWLW ABALL605,D,ABALL606,D,ABALL607,D,ABALL608,D
LWLWLWLW ABALL609,D,ABALL610,D,ABALL611,D,ABALL612,D
LWLWLWLW ABALL613,D,ABALL614,D,ABALL615,D,ABALL616,D
LWLWLWLW ABALL617,D,ABALL618,D,ABALL619,D,ABALL620,D
LWLWLWLW ABALL621,D,ABALL622,D,ABALL623,D,ABALL624,D
LWLWLWLW ABALL625,D,ABALL626,D,ABALL627,D,ABALL628,D
LWLW ABALL629,D,ABALL630,D
.long 0
#ba7_l
LWLWLWLW ABALL701,D,ABALL702,D,ABALL703,D,ABALL704,D
LWLWLWLW ABALL705,D,ABALL706,D,ABALL707,D,ABALL708,D
LWLWLWLW ABALL709,D,ABALL710,D,ABALL711,D,ABALL712,D
LWLWLWLW ABALL713,D,ABALL714,D,ABALL715,D,ABALL716,D
LWLWLWLW ABALL717,D,ABALL718,D,ABALL719,D,ABALL720,D
LWLWLWLW ABALL721,D,ABALL722,D,ABALL723,D,ABALL724,D
LWLWLWLW ABALL725,D,ABALL726,D,ABALL727,D,ABALL728,D
LWLW ABALL729,D,ABALL730,D
.long 0
#ba8_l
LWLWLWLW ABALL801,D,ABALL802,D,ABALL803,D,ABALL804,D
LWLWLWLW ABALL805,D,ABALL806,D,ABALL807,D,ABALL808,D
LWLWLWLW ABALL809,D,ABALL810,D,ABALL811,D,ABALL812,D
LWLWLWLW ABALL813,D,ABALL814,D,ABALL815,D,ABALL816,D
LWLWLWLW ABALL817,D,ABALL818,D,ABALL819,D,ABALL820,D
LWLWLWLW ABALL821,D,ABALL822,D,ABALL823,D,ABALL824,D
LWLWLWLW ABALL825,D,ABALL826,D,ABALL827,D,ABALL828,D
LWLW ABALL829,D,ABALL830,D
.long 0
;;#ba9_l
;; LWLWLWLW ABALL901,D,ABALL902,D,ABALL903,D,ABALL904,D
;; LWLWLWLW ABALL905,D,ABALL906,D,ABALL907,D,ABALL908,D
;; LWLWLWLW ABALL909,D,ABALL910,D,ABALL911,D,ABALL912,D
;; LWLWLWLW ABALL913,D,ABALL914,D,ABALL915,D,ABALL916,D
;; LWLWLWLW ABALL917,D,ABALL918,D,ABALL919,D,ABALL920,D
;; LWLWLWLW ABALL921,D,ABALL922,D,ABALL923,D,ABALL924,D
;; LWLWLWLW ABALL925,D,ABALL926,D,ABALL927,D,ABALL928,D
;; LWLW ABALL929,D,ABALL930,D
;; .long 0
;;
;;#ba10_l
;; LWLWLWLW ABALL1001,D,ABALL1002,D,ABALL1003,D,ABALL1004,D
;; LWLWLWLW ABALL1005,D,ABALL1006,D,ABALL1007,D,ABALL1008,D
;; LWLWLWLW ABALL1009,D,ABALL1010,D,ABALL1011,D,ABALL1012,D
;; LWLWLWLW ABALL1013,D,ABALL1014,D,ABALL1015,D,ABALL1016,D
;; LWLWLWLW ABALL1017,D,ABALL1018,D,ABALL1019,D,ABALL1020,D
;; LWLWLWLW ABALL1021,D,ABALL1022,D,ABALL1023,D,ABALL1024,D
;; LWLWLWLW ABALL1025,D,ABALL1026,D,ABALL1027,D,ABALL1028,D
;; LWLW ABALL1029,D,ABALL1030,D
;; .long 0
#shad_t
.long ballshad7
.long ballshad7,ballshad7,ballshad7,ballshad6,ballshad6,ballshad5
.long ballshad5,ballshad4,ballshad4,ballshad3,ballshad2
.long ballshad2,ballshad2,ballshad2,ballshad2,ballshad2,ballshad2
; .long ballshad9
;
; .long ballshad8,ballshad8,ballshad7,ballshad7,ballshad7,ballshad7
; .long ballshad6,ballshad5,ballshad4,ballshad4,ballshad2
;
; .long ballshad2,ballshad2,ballshad2,ballshad2,ballshad2,ballshad2
#*******************************
* Show halftime intro and clips (JSRP)
CLIPTEST .equ 0
SUBR halftime_showclips
movi 4*60,a10
#stop SLEEPK 1
subk 1,a10
jrle #tvout
move @tvpanelon,a0,L
jrnz #stop
#tvout
RETP
**************************************************************
*
**************************************************************
SUBR seq_handle_fadeaside
move *a13(plyr_seq),a0
cmpi SHOOT_SEQ,a0
jrne #nofdsd
move *a13(plyr_num),a14
move @PSTATUS,a0
btst a14,a0
jrz #nofdsd ;br=a drone!
move *a13(plyr_num),a0
.ref get_stick_val_cur
calla get_stick_val_cur ;ret. a0=joy switch value
move *a13(plyr_num),a14
srl 1,a14
jrnz #fdtm2 ;br=team 1
cmpi JOY_LEFT,a0
jrne #nofdsd ;br=dont do fade-aside
movi -2500h*6,a1 ;x velocity
jruc #fdtm1
#fdtm2
cmpi JOY_RIGHT,a0
jrne #nofdsd
movi 2500h*6,a1 ;x velocity
addk 32,b4 ;skip over fade-away seq. ptr
#fdtm1
move *b4,b4,L ;set new seq.
move a1,*a8(OXVEL),L
rets
#nofdsd
addi 32*2,b4
rets
**************************************************************
*
**************************************************************
SUBR seq_handle_fade_away
move *a13(plyr_seq),a0
cmpi SHOOT_SEQ,a0
jrne #nofadwy
move *a13(plyr_ohpdist),a14
cmpi 25,a14 ;too close to hoop ?
jrlt #nofadwy ;br=yes
move *a13(plyr_num),a14
move @PSTATUS,a0
btst a14,a0
jrnz #humn ;br=not a drone!
move *a13(plyr_ohpdist),a14
cmpi >ff,a14 ;too far from hoop ?
jrgt #nofadwy ;br=yes
move *a13(PA8),a2,L
move *a2(OXANI+16),a1
move *a2(OXPOS),a2 ;my X pos.
add a1,a2
movk 2,a14 ;team 2
move *a13(plyr_num),a5
srl 1,a5 ;get opponents proc.
jrz #drnf2 ;br=team 1
clr a14
#drnf2
sll 5,a14
addi plyrobj_t,a14
move *a14+,a5,L ;get opponent #1's X
move *a5(OXANI+16),a1
move *a5(OXPOS),a5
add a1,a5
move *a14,a3,L ;get opponent #2's X
move *a3(OXANI+16),a1
move *a3(OXPOS),a3
add a1,a3
move *a13(plyr_seqdir),a14
move a14,a0
move *a13(plyr_o1dist),a1
cmpi 70,a1
jrgt #ckop2 ;br=opponent #1 to far
move *a13(plyr_anirevff),a1
jrnz #lhp ;br=team 2
cmp a5,a2 ;is opponent #1 behind me ?
jrgt #fdin ;br=yes
jruc #drnfd2
#lhp
cmp a2,a5 ;is opponent #1 behind me ?
jrgt #fdin ;br=yes
jruc #drnfd2
#ckop2
move *a13(plyr_o2dist),a1
cmpi 70,a1
jrgt #nofadwy ;br=opponent #2 to far
move *a13(plyr_anirevff),a1
jrnz #lhp2 ;br=team 2
cmp a3,a2 ;is opponent #2 behind me ?
jrgt #fdin ;br=yes
jruc #drnfd2
#lhp2
cmp a2,a3 ;is opponent #2 behind me ?
jrlt #drnfd2 ;br=no
#fdin
xori 4,a0 ;change to opp. dir (FADE IN)
jruc #drnfd2
#humn
move *a13(plyr_seqdir),a14
move *a13(plyr_num),a0
calla get_stick_val_cur ;ret. a0=joy switch value
sll 32-4,a0
srl 32-4-4,a0
addi joy_dir_tbl,a0
move *a0,a0
jrn #nofadwy ;br=joy. not in correct dir.
;This is a lean in or fade away, reduce % only if a 3 pt shot
movk 1,a4
.ref reduce_3ptr
move a4,@reduce_3ptr
#drnfd2
move a0,a2
sll 6,a0
addi vels_tbl,a0
move *a0+,a1,L ;get X vel
move *a0,a0,L ;get Z vel
cmp a2,a14
jreq #fdawy
xori 4,a2 ;change to opposite dir
cmp a2,a14
jrne #nofadwy
move *a13(plyr_ohpdist),a14
cmpi 60,a14 ;too close for fade-in ?
jrlt #nofadwy ;br=yes
addk 32,b4 ;do FADE-IN seq
#fdawy
move *b4,b4,L
move a1,*a8(OXVEL),L
;#nox
move a0,*a8(OZVEL),L
rets
#nofadwy
addi 32*2,b4
rets
joy_dir_tbl
.word -1,-1,-1,-1,2,3,1,-1,6,5,7,-1,-1,-1,-1,-1,-1,-1
vels_tbl
.long 0 , 0 ;direction 1
.long -21efh*7, 21efh*7 ;^ 2 (3000h * .707)
.long -3000h*6, 0 ;^ 3
.long -21efh*7,-21efh*7 ;^ 4
.long 0 , 0 ;^ 5
.long 21efh*7,-21efh*7 ;^ 6
.long 3000h*6, 0 ;^ 7
.long 21efh*7, 21efh*7 ;^ 8
#*******************************
* Dispatch salt explosions from rim at on fire time
* A8=*Ball object
SUBR rim_salt
movk 8,a9
#lp CREATE0 #do_salt
SLEEPK 2
dsj a9,#lp
DIE
#do_salt
movi #salt_t,a9
movi DMAWNZ|M_NOCOLL|M_3D|M_NOSCALE,a4
movi 10000h,a0
calla RNDRNG0
move a0,a6
movi 60000h,a0
calla RNDRNG0
addi 10000h,a0
move a0,a7
btst 0,a7
jrz #1
movi #salt2_t,a9
#1
move *a8(OZPOS),a3
addk 1h,a3
move *a8(OYVAL),a1,L
move *a8(OXVAL),a0,L
addi [10,0],a0
move *a8(OXPOS),a14
cmpi WRLDMID,a14
jrlt #lft
addi [6,0],a0
movi DMAWNZ|M_FLIPH|M_NOCOLL|M_3D|M_NOSCALE,a4
#lft
movi SALTA01,a2
movi CLSDEAD,a5
calla BEGINOBJ2
SLEEPK 1
jauc FRQDELDIE
#salt_t
.ref SALTTR_P
LW SALTA01,1
LW SALTA02,2
LW SALTA03,2
LW SALTA04,2
LW SALTA05,2
LW SALTA06,2
LW SALTA07,2
LW SALTA08,3
LW SALTA09,3
LWL0 SALTA10,3
#salt2_t
LW SALTB01,2
LW SALTB02,2
LW SALTB03,2
LW SALTB04,2
LW SALTB05,2
LW SALTB06,2
LW SALTB07,2
LW SALTB08,3
LW SALTB09,3
LW SALTB10,3
LWL0 SALTB11,3
#*******************************
* Fire circle under feet
* A8=*Src obj
* A10=*Plyr process
SUBR fire_circle
move @pup_court,a14
jrz #notd
CREATE0 #foot_smoke
CREATE0 #foot_smoke2
#notd
movi #fire_circle_t,a9
move *a10(plyr_shadobj_p),a8,L
move *a8(OXANI+16),a0
move *a8(OXPOS),a2
add a0,a2
addi 14,a2
move a2,a0
sll 16,a0
clr a1
move *a8(OZPOS),a3
addi 22h,a3
movi HOTNA_01,a2
movi DMAWNZ|M_NOCOLL|M_3D|M_NOSCALE,a4
movi CLSDEAD,a5
clr a6
clr a7
calla BEGINOBJ2
; movi scale50_t,a0
; move a0,*a8(ODATA_p),L
SLEEPK 1
jauc FRQDELDIE
#fire_circle_t
.ref HOT_P
LW HOTNA_01,1
LW HOTNA_02,2
LW HOTNA_03,2
LW HOTNA_04,2
LW HOTNA_05,2
LW HOTNA_06,2
LW HOTNA_07,2
LW HOTNA_08,3
LW HOTNA_09,3
LW HOTNA_10,3
LW HOTNA_11,3
LW HOTNA_12,4
LWL0 HOTNA_13,4
#foot_smoke
SLEEPK 2
#foot_smoke2
movi #smoke_t,a9
movi 20000h,a0
calla RNDRNG0
subi 10000h,a0
move a0,a6
movi 60000h,a0
calla RNDRNG0
neg a0
move a0,a7
move *a10(plyr_shadobj_p),a8,L
move *a8(OXANI+16),a0
move *a8(OXPOS),a2
add a0,a2
addi 8,a2
move a2,a0
sll 16,a0
clr a1
move *a8(OZPOS),a3
addi 22h,a3
movi SMOKE01,a2
movi DMAWNZ|M_NOCOLL|M_3D|M_NOSCALE,a4
movi CLSDEAD,a5
calla BEGINOBJ2
SLEEPK 1
jauc FRQDELDIE
#smoke_t
.ref SMOKE_P
LW SMOKE01,1
LW SMOKE02,2
LW SMOKE03,2
LW SMOKE04,2
LW SMOKE05,2
LW SMOKE06,2
LW SMOKE07,2
LW SMOKE08,3
LW SMOKE09,3
LWL0 SMOKE10,3
#*******************************
* Smoke trail (Process)
* A8=*Src obj
;* A10=*Plyr process
; SUBR ball_smoketrail
;
; movi 8000,a11
;#lp CREATE0 ball_smokepuff
; SLEEPK 2
; dsj a11,#lp
; DIE
;#*******************************
;* Start sparks in AMODE
;
; SUBR do_ball_spark
;
; movi 45,a11
;#lp CREATE0 ball_spark
; SLEEPK 4
; dsj a11,#lp
; DIE
#*******************************
* Smoke trail puff (Process)
* A8=*Src obj
SUBR ball_smokepuff
move a8,a11
; move @HCOUNT,a0
; sll 32-1,a0
; jrnz #nosprk
; CREATE0 ball_spark
;#nosprk
movk 3,a0
callr rnd
sll 5,a0
.ref balltmshotcnt
move @balltmshotcnt,a14
subk TMFIRE_MINCNT,a14
jrn #reg
;Use blue smoke for team on fire
addi smoke_team_t,a0
jruc #cont
#reg
addi smoke_t,a0
#cont move *a0,a9,L
move *a8(OZPOS),a3 ;puff ZPOS
movk 3,a0
callr rnd
; subk 2,a0 ;-2 to 1
add a0,a3
move *a8(OXVAL),a0,L ;puff XPOS @ ball mid X
move *a8(OSIZEX),a2
sll 16-1,a2
add a2,a0
move *a8(OYVAL),a1,L ;puff YPOS @ ball mid Y
move *a8(OSIZEY),a2
sll 16-1,a2
add a2,a1
move *a9+,a2,L ;puff IMG
move *a2(IANIOFF),a6,L ;Add ani X,Y so obj X,Y is still
clr a7 ; ball mid X,Y
movy a6,a7
sll 16,a6
add a6,a0
add a7,a1
movi DMAWNZ|M_3D|M_NOCOLL,a4
movi CLSDEAD,a5
move *a8(OXVEL),a6,L ;puff XVEL & YVEL
move *a8(OYVEL),a7,L
sra 2,a6
sra 2,a7
calla BEGINOBJ2
movi scale50_t,a0 ;puff *scale
move a0,*a8(ODATA_p),L
move *a11(OZVEL),a0,L ;puff ZVEL
sra 2,a0
move a0,*a8(OZVEL),L
calla anipt_getsclxy ;Adjust for scaled puff ani X,Y
move *a8(OXVAL),a14,L
sub a0,a14
move a14,*a8(OXVAL),L
move *a8(OYVAL),a14,L
sub a1,a14
move a14,*a8(OYVAL),L
move *a11(OXANI),a14,L ;Get ball ani X
jrz #alp ; br=skip if 0
move a14,*a8(OXANI),L ;Save it to puff & go resolve for X
move a8,a0
.ref convfmprel
calla convfmprel
jruc #alp
#lp
move *a8(OCTRL),a1
move *a0(ICTRL),a14
andi >8003,a1
or a14,a1
move a1,*a8(OCTRL)
calla obj_aniq_scld
clr a0
move a0,*a8(OXANI),L ;Clr scaled anipt
#alp
move *a9+,a0 ;Any flags with sleep cnt?
jrnn #slp ; br=no
move a0,a2
move *a9+,a0,L
calla pal_getf
move a0,*a8(OPAL)
move a2,a0
sll 32-8,a0 ;Keep 8 lsbs for sleep cnt
srl 32-8,a0
#slp
calla PRCSLP
move *a9+,a0,L
jrnz #lp
jauc DELOBJDIE
smoke_t
.long smoko_l,smokw_l,smoko_l,smokp_l
smoke_team_t
.long smokb_l,smokw_l,smokb_l,smokb_l
smoko_l
LW XPLOD_YEL,2
LWL SMOK1_01,2+>8000,SMOK_O_P
LW SMOK1_02,2
LW SMOK1_03,2
LWL SMOK1_04,2+>8000,SMOK_W_P
LW SMOK1_05,2
LW SMOK1_06,2
LW SMOK1_07,2
LW SMOK1_08,2
LW SMOK1_09,2
LW SMOK1_10,2
LW SMOK1_11,2
LWL0 SMOK1_12,2
smokw_l
LW XPLOD_BRT,2
LWL SMOK1_02,2+>8000,SMOK_W_P
LW SMOK1_03,2
LW SMOK1_04,2
LW SMOK1_05,2
LW SMOK1_06,2
LW SMOK1_07,2
LW SMOK1_08,2
LW SMOK1_09,2
LW SMOK1_10,1
LW SMOK1_11,1
LWL0 SMOK1_12,1
smokb_l
LW XPLOD_BLU,2
LWL SMOK1_01,2+>8000,SMOK_B_P
LW SMOK1_02,2
LW SMOK1_03,2
LWL SMOK1_04,2+>8000,SMOK_W_P
LW SMOK1_05,2
LW SMOK1_06,2
LW SMOK1_07,2
LW SMOK1_08,2
LW SMOK1_09,2
LW SMOK1_10,2
LW SMOK1_11,2
LWL0 SMOK1_12,2
smokp_l
LW XPLOD_BLU,2
LWL SMOK1_02,2+>8000,SMOK_P_P
LW SMOK1_03,2
LW SMOK1_04,2
LWL SMOK1_05,2+>8000,SMOK_W_P
LW SMOK1_06,2
LW SMOK1_07,2
LW SMOK1_08,2
LW SMOK1_09,2
LW SMOK1_10,1
LW SMOK1_11,1
LWL0 SMOK1_12,1
SCLT .macro sx,sy,sxa,sya
.eval :sx:*1048,X ;Convert (has slight error)
.eval :sy:*1048,Y
.eval :sxa:*1048,XA
.eval :sya:*1048,YA
.loop 10
.word >10000000/X,>10000000/Y
.word >100000/(>10000000/X),>100000/(>10000000/Y)
.eval X+XA*1/4,X
.eval Y+YA*1/4,Y
.endloop
.loop 10
.word >10000000/X,>10000000/Y
.word >100000/(>10000000/X),>100000/(>10000000/Y)
.eval X+XA*2/4,X
.eval Y+YA*2/4,Y
.endloop
.loop 10
.word >10000000/X,>10000000/Y
.word >100000/(>10000000/X),>100000/(>10000000/Y)
.eval X+XA*3/4,X
.eval Y+YA*3/4,Y
.endloop
.loop 10
.word >10000000/X,>10000000/Y
.word >100000/(>10000000/X),>100000/(>10000000/Y)
.eval X+XA,X
.eval Y+YA,Y
.endloop
.endm
;--------------------
; Generate scale tables
;scale30_t
; SCLT 300,300,19,19
;scale50_t
; SCLT 500,500,31,31
scale50_t
SCLT 330,330,18,18
********************************
* Get random # with mask
* A0=Mask
* >A0=Rnd # (Pass CC)
* Trashes scratch
SUBRP rnd
move @RAND,a1,L
rl a1,a1
move @HCOUNT,a14
rl a14,a1
add sp,a1
move a1,@RAND,L
and a1,a0
rets
#*******************************
*
* A3 - direction
* >a0 - dunk seq.
SUBR getdunkseq
move *a13(plyr_num),a0 ;If on fire, don't use turbo on run
.ref plyr_onfire
move @plyr_onfire,a1
btst a0,a1
jrnz set5 ;br=player is on fire!!
move *a13(plyr_attrib_p),a0,L
move *a0(PAT_DUNKSKILL),a0
; movk 9,a0
sll 5,a0
addi jmp_t,a0
move *a0,a0,L
jump a0
set5
addi d5u_t,a3
cmpi 40,a4
jrle #shortd ;Under hoop?
addi d5s_t-d5u_t,a3
cmpi 70,a4 ;Short range
; cmpi 60,a4 ;Short range
jrle #shortd
move *a13(plyr_turbon),a14
jrz #sj
addi d5m_t-d5s_t,a3,W
cmpi 100,a4 ;Med range
jrle #shortd
addi d5l_t-d5m_t,a3,W
jruc #shortd
;
set4
addi d4u_t,a3
cmpi 40,a4
jrle #shortd ;Under hoop?
addi d4s_t-d4u_t,a3
cmpi 70,a4 ;Short range
jrle #shortd
move *a13(plyr_turbon),a14
jrz #sj
addi d4m_t-d4s_t,a3,W
cmpi 100,a4 ;Med range
jrle #shortd
addi d4l_t-d4m_t,a3,W
jruc #shortd
;
set3
addi d3u_t,a3
cmpi 40,a4
jrle #shortd ;Under hoop?
addi d3s_t-d3u_t,a3
cmpi 70,a4 ;Short range
jrle #shortd
move *a13(plyr_turbon),a14
jrz #sj
addi d3m_t-d3s_t,a3,W
cmpi 100,a4 ;Med range
jrle #shortd
addi d3l_t-d3m_t,a3,W
jruc #shortd
;
set2
addi d3u_t,a3
cmpi 40,a4
jrle #shortd ;Under hoop?
addi d2s_t-d2u_t,a3
cmpi 70,a4 ;Short range
jrle #shortd
move *a13(plyr_turbon),a14
jrz #sj
addi d2m_t-d2s_t,a3,W
cmpi 100,a4 ;Med range
jrle #shortd
addi d2l_t-d2m_t,a3,W
jruc #shortd
;
set1
addi d1u_t,a3
cmpi 40,a4
; cmpi 60,a4
jrle #shortd ;Under hoop?
addi d1s_t-d1u_t,a3
cmpi 70,a4 ;Short range
; cmpi 80,a4 ;Short range
jrle #shortd
move *a13(plyr_turbon),a14
jrz #sj
addi d1m_t-d1s_t,a3,W
cmpi 100,a4 ;Med range
; cmpi 110,a4 ;Med range
jrle #shortd
addi d1l_t-d1m_t,a3,W
#shortd clr a0
rets
#sj movk 1,a0
rets
;
; Which set of dunks to use based on 0-10 attribute level
;
jmp_t .long set1,set1,set1,set2,set2
.long set3,set4,set4,set5,set5,set5
#****************************************************************************
;Set of dunks for #5 skill level
d5u_t .long #d1u_t,#d2u_t,#d3u_t,#d4u_t
.long #d5u_t,#d4u_t,#d3u_t,#d2u_t, #d1u_t
d5s_t .long #d1s_t,#d2s_t,#d3s_t,#d4s_t
.long #d5s_t,#d4s_t,#d3s_t,#d2s_t, #d1s_t
d5m_t .long #d1m_t,#d2m_t,#d3m_t,#d4m_t
.long #d5m_t,#d4m_t,#d3m_t,#d2m_t, #d1m_t
d5l_t .long #d1l_t,#d2l_t,#d3l_t,#d4l_t
.long #d5l_t,#d4l_t,#d3l_t,#d2l_t, #d1l_t
;UNDER hoop
#d1u_t .word 3-1
.word DUNKA3_SEQ,DUNKS2_SEQ,DUNKU3_SEQ
#d2u_t .word 4-1
.word DUNKA3_SEQ,DUNKL3_SEQ,DUNKP2_SEQ,DUNKU3_SEQ
#d3u_t .word 3-1
.word DUNKD2_SEQ,DUNKL3_SEQ,DUNKU3_SEQ
#d4u_t .word 4-1
.word DUNKD2_SEQ,DUNKE_SEQ,DUNKL3_SEQ,DUNKP2_SEQ
#d5u_t .word 2-1
.word DUNKE_SEQ,DUNKP2_SEQ
;NEAR hoop
#d1s_t .word 6-1
.word DUNKA2_SEQ,DUNKP2_SEQ,DUNKA2_SEQ,DUNKP2_SEQ
.word DUNKS2_SEQ,DUNKU3_SEQ
#d2s_t .word 3-1
.word DUNKA2_SEQ,DUNKP2_SEQ,DUNKU3_SEQ
#d3s_t .word 1-1
.word DUNKU3_SEQ
#d4s_t .word 4-1
.word DUNKE_SEQ,DUNKP2_SEQ,DUNKP2_SEQ,DUNKV4_SEQ
#d5s_t .word 2-1
.word DUNKE_SEQ,DUNKP2_SEQ
;MEDIUM to hoop
#d1m_t .word 13-1
.word DUNKA_SEQ,DUNKA2_SEQ,DUNKC_SEQ,DUNKK_SEQ
.word DUNKK2_SEQ,DUNKK_SEQ,DUNKZ3_SEQ,DUNKR2_SEQ
.word DUNKU2_SEQ,DUNKY2_SEQ,DUNKLAY_SEQ,DUNKC_SEQ
.word DUNKZ3_SEQ
#d2m_t .word 14-1
.word DUNKA_SEQ,DUNKA2_SEQ,DUNKB_SEQ,DUNKJ2_SEQ
.word DUNKK_SEQ,DUNKN_SEQ,DUNKC_SEQ,DUNKP_SEQ
.word DUNKT_SEQ,DUNKT2_SEQ,DUNKV_SEQ,DUNKZ3_SEQ
.word DUNKY2_SEQ,DUNKZ2_SEQ
#d3m_t .word 12-1
.word DUNKB_SEQ,DUNKJ_SEQ,DUNKQ_SEQ,DUNKV_SEQ
.word DUNKLAY_SEQ,DUNKY2_SEQ,DUNKJ2_SEQ,DUNKD_SEQ
.word DUNKK_SEQ,DUNKX2_SEQ,DUNKX3_SEQ,DUNKT_SEQ
#d4m_t .word 9-1
.word DUNKJ2_SEQ,DUNKP_SEQ,DUNKQ_SEQ,DUNKT2_SEQ
.word DUNKP_SEQ,DUNKX2_SEQ,DUNKX3_SEQ,DUNKD_SEQ
.word DUNKE2_SEQ
#d5m_t .word 3-1
.word DUNKE2_SEQ,DUNKP_SEQ,DUNKZ_SEQ
;FAR from hoop
#d1l_t .word 11-1
.word DUNKB3_SEQ,DUNKU2_SEQ,DUNKK2_SEQ,DUNKN_SEQ
.word DUNKY2_SEQ,DUNKN3_SEQ,DUNKO_SEQ,DUNKP3_SEQ
.word DUNKY_SEQ,DUNKLAY_SEQ,DUNKZ3_SEQ
#d2l_t .word 32-1
.word DUNKA_SEQ,DUNKB_SEQ,DUNKK2_SEQ,DUNKB3_SEQ
.word DUNKN_SEQ,DUNKN2_SEQ,DUNKN3_SEQ,DUNKO_SEQ
.word DUNKP_SEQ,DUNKP3_SEQ,DUNKG2_SEQ,DUNKF_SEQ
.word DUNKS_SEQ,DUNKT_SEQ,DUNKT3_SEQ,DUNKLAY2_SEQ
.word DUNKV2_SEQ,DUNKT5_SEQ,DUNKU2_SEQ,DUNKV_SEQ
.word DUNKV2_SEQ,DUNKV3_SEQ,DUNKW3_SEQ,DUNKJ2_SEQ
.word DUNKLAY3_SEQ,DUNKY2_SEQ,DUNKZ2_SEQ,DUNKY_SEQ
.word DUNKLAY6_SEQ,DUNKX3_SEQ,DUNKZ3_SEQ,DUNKLAY_SEQ
#d3l_t .word 37-1
.word DUNKB_SEQ,DUNKK2_SEQ,DUNKD_SEQ,DUNKG2_SEQ
.word DUNKL_SEQ,DUNKN_SEQ,DUNKN2_SEQ,DUNKJ_SEQ
.word DUNKN3_SEQ,DUNKO_SEQ,DUNKP3_SEQ,DUNKQ_SEQ
.word DUNKQ2_SEQ,DUNKS_SEQ,DUNKT_SEQ,DUNKQ3_SEQ
.word DUNKT3_SEQ,DUNKV_SEQ,DUNKT5_SEQ,DUNKU2_SEQ
.word DUNKV_SEQ,DUNKV2_SEQ,DUNKV3_SEQ,DUNKW_SEQ
.word DUNKW2_SEQ,DUNKW3_SEQ,DUNKX_SEQ,DUNKP3_SEQ
.word DUNKY_SEQ,DUNKLAY_SEQ,DUNKLAY2_SEQ,DUNKY2_SEQ
.word DUNKLAY3A_SEQ,DUNKV_SEQ,DUNKLAY7_SEQ,DUNKO2_SEQ
.word DUNKL2_SEQ
#d4l_t .word 17-1
.word DUNKG2_SEQ,DUNKJ_SEQ,DUNKK2_SEQ,DUNKY_SEQ
.word DUNKP_SEQ,DUNKQ_SEQ,DUNKQ2_SEQ,DUNKX2_SEQ
.word DUNKW_SEQ,DUNKW2_SEQ,DUNKW3_SEQ,DUNKX_SEQ
.word DUNKP3_SEQ,DUNKT5_SEQ,DUNKJ_SEQ,DUNKY2_SEQ
.word DUNKD_SEQ
#d5l_t .word 6-1
.word DUNKP_SEQ,DUNKW_SEQ,DUNKW2_SEQ,DUNKW3_SEQ
.word DUNKX_SEQ,DUNKZ_SEQ
#****************************************************************************
;Set of dunks for #4 skill players
d4u_t .long #d1u_t,#d2u_t,#d3u_t,#d4u_t
.long #d5u_t,#d4u_t,#d3u_t,#d2u_t, #d1u_t
d4s_t .long #d1s_t,#d2s_t,#d3s_t,#d4s_t
.long #d5s_t,#d4s_t,#d3s_t,#d2s_t, #d1s_t
d4m_t .long #d1m_t,#d2m_t,#d3m_t,#d4m_t
.long #d5m_t,#d4m_t,#d3m_t,#d2m_t, #d1m_t
d4l_t .long #d1l_t,#d2l_t,#d3l_t,#d4l_t
.long #d5l_t,#d4l_t,#d3l_t,#d2l_t, #d1l_t
;UNDER hoop
#d1u_t .word 3-1
.word DUNKA3_SEQ,DUNKS2_SEQ,DUNKU3_SEQ
#d2u_t .word 3-1
.word DUNKA3_SEQ,DUNKL3_SEQ,DUNKP2_SEQ
#d3u_t .word 3-1
.word DUNKD2_SEQ,DUNKL3_SEQ,DUNKU3_SEQ
#d4u_t .word 4-1
.word DUNKD2_SEQ,DUNKE_SEQ,DUNKL3_SEQ,DUNKP2_SEQ
#d5u_t .word 2-1
.word DUNKE_SEQ,DUNKP2_SEQ
;NEAR hoop
#d1s_t .word 4-1
.word DUNKA2_SEQ,DUNKS2_SEQ,DUNKU3_SEQ,DUNKLAY3C_SEQ
#d2s_t .word 6-1
.word DUNKA2_SEQ,DUNKP2_SEQ,DUNKU3_SEQ,DUNKR_SEQ
.word DUNKLAY3C_SEQ,DUNKP2_SEQ
#d3s_t .word 2-1
.word DUNKU3_SEQ,DUNKLAY3C_SEQ
#d4s_t .word 2-1
.word DUNKE_SEQ,DUNKP2_SEQ
#d5s_t .word 2-1
.word DUNKE_SEQ,DUNKP2_SEQ
;MEDIUM to hoop
#d1m_t .word 12-1
.word DUNKA_SEQ,DUNKA2_SEQ,DUNKB3_SEQ,DUNKC_SEQ
.word DUNKK_SEQ,DUNKR2_SEQ,DUNKU2_SEQ,DUNKY2_SEQ
.word DUNKZ3_SEQ,DUNKR2_SEQ,DUNKZ3_SEQ,DUNKLAY3A_SEQ
#d2m_t .word 16-1
.word DUNKA_SEQ,DUNKA2_SEQ,DUNKB_SEQ,DUNKC_SEQ
.word DUNKK_SEQ,DUNKV_SEQ,DUNKR_SEQ,DUNKT_SEQ
.word DUNKLAY_SEQ,DUNKZ2_SEQ,DUNKZ3_SEQ,DUNKLAY8_SEQ
.word DUNKP_SEQ,DUNKY2_SEQ,DUNKJ2_SEQ,DUNKT2_SEQ
#d3m_t .word 11-1
.word DUNKB_SEQ,DUNKD_SEQ,DUNKJ2_SEQ,DUNKV_SEQ
.word DUNKY2_SEQ,DUNKT_SEQ,DUNKT2_SEQ,DUNKX2_SEQ
.word DUNKQ_SEQ,DUNKLAY_SEQ,DUNKX3_SEQ
#d4m_t .word 9-1
.word DUNKJ2_SEQ,DUNKX3_SEQ,DUNKE2_SEQ,DUNKD_SEQ
.word DUNKP_SEQ,DUNKQ_SEQ,DUNKX2_SEQ,DUNKT2_SEQ
.word DUNKV_SEQ
#d5m_t .word 3-1
.word DUNKP_SEQ,DUNKE2_SEQ,DUNKZ_SEQ
;FAR from hoop
#d1l_t .word 12-1
.word DUNKB3_SEQ,DUNKU2_SEQ,DUNKK2_SEQ,DUNKN_SEQ
.word DUNKN2_SEQ,DUNKP3_SEQ,DUNKU2_SEQ,DUNKY2_SEQ
.word DUNKY_SEQ,DUNKLAY_SEQ,DUNKZ3_SEQ,DUNKP3_SEQ
#d2l_t .word 24-1
.word DUNKZ3_SEQ,DUNKB_SEQ,DUNKK2_SEQ,DUNKB3_SEQ
.word DUNKF_SEQ,DUNKG_SEQ,DUNKG2_SEQ,DUNKJ2_SEQ
.word DUNKY2_SEQ,DUNKK2_SEQ,DUNKV2_SEQ,DUNKV3_SEQ
.word DUNKN2_SEQ,DUNKP_SEQ,DUNKP3_SEQ,DUNKT_SEQ
.word DUNKT3_SEQ,DUNKT5_SEQ,DUNKU2_SEQ,DUNKV_SEQ
.word DUNKY_SEQ,DUNKLAY_SEQ,DUNKZ2_SEQ,DUNKS_SEQ
#d3l_t .word 28-1
.word DUNKB_SEQ,DUNKJ_SEQ,DUNKD_SEQ,DUNKQ_SEQ
.word DUNKG_SEQ,DUNKG2_SEQ,DUNKJ_SEQ,DUNKY2_SEQ
.word DUNKK2_SEQ,DUNKL_SEQ,DUNKN2_SEQ,DUNKP3_SEQ
.word DUNKQ2_SEQ,DUNKS_SEQ,DUNKT_SEQ,DUNKQ3_SEQ
.word DUNKY_SEQ,DUNKT3_SEQ,DUNKT5_SEQ,DUNKU2_SEQ
.word DUNKV_SEQ,DUNKV2_SEQ,DUNKW_SEQ,DUNKW3_SEQ
.word DUNKX_SEQ,DUNKLAY8_SEQ,DUNKO2_SEQ,DUNKL2_SEQ
#d4l_t .word 20-1
.word DUNKJ_SEQ,DUNKD_SEQ,DUNKG_SEQ,DUNKP_SEQ
.word DUNKG2_SEQ,DUNKJ_SEQ,DUNKD_SEQ,DUNKK2_SEQ
.word DUNKQ_SEQ,DUNKQ2_SEQ,DUNKT3_SEQ,DUNKY2_SEQ
.word DUNKT5_SEQ,DUNKV_SEQ,DUNKV2_SEQ,DUNKV3_SEQ
.word DUNKW_SEQ,DUNKW3_SEQ,DUNKX_SEQ,DUNKY_SEQ
#d5l_t .word 5-1
.word DUNKP_SEQ,DUNKW_SEQ,DUNKW3_SEQ,DUNKX_SEQ
.word DUNKZ_SEQ
#****************************************************************************
;Set of dunks for #3 skill players
d3u_t .long #d1u_t,#d2u_t,#d3u_t,#d4u_t
.long #d5u_t,#d4u_t,#d3u_t,#d2u_t, #d1u_t
d3s_t .long #d1s_t,#d2s_t,#d3s_t,#d4s_t
.long #d5s_t,#d4s_t,#d3s_t,#d2s_t, #d1s_t
d3m_t .long #d1m_t,#d2m_t,#d3m_t,#d4m_t
.long #d5m_t,#d4m_t,#d3m_t,#d2m_t, #d1m_t
d3l_t .long #d1l_t,#d2l_t,#d3l_t,#d4l_t
.long #d5l_t,#d4l_t,#d3l_t,#d2l_t, #d1l_t
;UNDER hoop
#d1u_t .word 2-1
.word DUNKS2_SEQ,DUNKU3_SEQ
#d2u_t .word 1-1
.word DUNKA3_SEQ
#d3u_t .word 2-1
.word DUNKD2_SEQ,DUNKU3_SEQ
#d4u_t .word 1-1
.word DUNKD2_SEQ
#d5u_t .word 2-1
.word DUNKLAY6_SEQ,DUNKE_SEQ
;NEAR hoop
#d1s_t .word 4-1
.word DUNKA2_SEQ,DUNKS2_SEQ,DUNKU3_SEQ,DUNKLAY3C_SEQ
#d2s_t .word 4-1
.word DUNKA2_SEQ,DUNKP2_SEQ,DUNKU3_SEQ,DUNKLAY3C_SEQ
#d3s_t .word 2-1
.word DUNKU3_SEQ,DUNKLAY3C_SEQ
#d4s_t .word 3-1
.word DUNKE_SEQ,DUNKE_SEQ,DUNKP2_SEQ
#d5s_t .word 2-1
.word DUNKE_SEQ,DUNKP2_SEQ
;MEDIUM to hoop
#d1m_t .word 12-1
.word DUNKA_SEQ,DUNKA2_SEQ,DUNKB3_SEQ,DUNKC_SEQ
.word DUNKK_SEQ,DUNKLAY6_SEQ,DUNKR2_SEQ,DUNKZ3_SEQ
.word DUNKLAY_SEQ,DUNKLAY3A_SEQ,DUNKLAY7_SEQ,DUNKLAY3B_SEQ
#d2m_t .word 16-1
.word DUNKA2_SEQ,DUNKB_SEQ,DUNKK_SEQ,DUNKC_SEQ
.word DUNKP_SEQ,DUNKV_SEQ,DUNKR_SEQ,DUNKJ2_SEQ
.word DUNKLAY_SEQ,DUNKLAY2_SEQ,DUNKZ3_SEQ,DUNKLAY3A_SEQ
.word DUNKLAY3C_SEQ,DUNKLAY5_SEQ,DUNKLAY7_SEQ,DUNKLAY8_SEQ
#d3m_t .word 15-1
.word DUNKD_SEQ,DUNKJ2_SEQ,DUNKK_SEQ,DUNKLAY3B_SEQ
.word DUNKQ_SEQ,DUNKV_SEQ,DUNKX3_SEQ,DUNKB_SEQ
.word DUNKLAY2_SEQ,DUNKLAY3_SEQ,DUNKX2_SEQ,DUNKLAY8_SEQ
.word DUNKLAY6_SEQ,DUNKLAY7A_SEQ,DUNKX2_SEQ
#d4m_t .word 11-1
.word DUNKD_SEQ,DUNKE2_SEQ,DUNKX3_SEQ,DUNKP_SEQ
.word DUNKT2_SEQ,DUNKJ2_SEQ,DUNKLAY6_SEQ,DUNKX2_SEQ
.word DUNKQ_SEQ,DUNKV_SEQ,DUNKX2_SEQ
#d5m_t .word 4-1
.word DUNKE2_SEQ,DUNKP_SEQ,DUNKLAY6_SEQ,DUNKZ_SEQ
;FAR from hoop
#d1l_t .word 11-1
.word DUNKB3_SEQ,DUNKB3_SEQ,DUNKK2_SEQ,DUNKN2_SEQ
.word DUNKP3_SEQ,DUNKU2_SEQ,DUNKY_SEQ,DUNKLAY7_SEQ
.word DUNKLAY_SEQ,DUNKLAY3_SEQ,DUNKLAY3B_SEQ
#d2l_t .word 29-1
.word DUNKA_SEQ,DUNKB_SEQ,DUNKB_SEQ,DUNKB3_SEQ
.word DUNKG_SEQ,DUNKG2_SEQ,DUNKJ2_SEQ,DUNKP3_SEQ
.word DUNKP_SEQ,DUNKK2_SEQ,DUNKN2_SEQ,DUNKY_SEQ
.word DUNKS_SEQ,DUNKT_SEQ,DUNKT_SEQ,DUNKT3_SEQ
.word DUNKT5_SEQ,DUNKU2_SEQ,DUNKV_SEQ,DUNKV2_SEQ
.word DUNKLAY_SEQ,DUNKLAY2_SEQ,DUNKLAY3_SEQ,DUNKLAY3A_SEQ
.word DUNKLAY3B_SEQ,DUNKLAY8_SEQ,DUNKLAY6_SEQ,DUNKLAY7_SEQ
.word DUNKX3_SEQ
#d3l_t .word 29-1
.word DUNKB_SEQ,DUNKB2_SEQ,DUNKD_SEQ,DUNKX_SEQ
.word DUNKG_SEQ,DUNKG2_SEQ,DUNKJ_SEQ,DUNKW_SEQ
.word DUNKK2_SEQ,DUNKL_SEQ,DUNKN2_SEQ,DUNKP3_SEQ
.word DUNKQ_SEQ,DUNKQ2_SEQ,DUNKS_SEQ,DUNKT_SEQ
.word DUNKT_SEQ,DUNKT3_SEQ,DUNKT5_SEQ,DUNKU2_SEQ
.word DUNKV_SEQ,DUNKV2_SEQ,DUNKW3_SEQ,DUNKLAY8_SEQ
.word DUNKY_SEQ,DUNKLAY_SEQ,DUNKLAY3C_SEQ,DUNKLAY6_SEQ
.word DUNKLAY7A_SEQ
#d4l_t .word 18-1
.word DUNKD_SEQ,DUNKG_SEQ,DUNKP_SEQ,DUNKQ_SEQ
.word DUNKG2_SEQ,DUNKJ_SEQ,DUNKK2_SEQ,DUNKX_SEQ
.word DUNKQ2_SEQ,DUNKT3_SEQ,DUNKLAY6_SEQ,DUNKY_SEQ
.word DUNKT5_SEQ,DUNKV_SEQ,DUNKV2_SEQ,DUNKW_SEQ
.word DUNKW3_SEQ,DUNKX2_SEQ
#d5l_t .word 6-1
.word DUNKP_SEQ,DUNKW_SEQ,DUNKW3_SEQ,DUNKX_SEQ
.word DUNKLAY6_SEQ,DUNKZ_SEQ
#****************************************************************************
;Set of dunks for #2 skill players
d2u_t .long #d1u_t,#d2u_t,#d3u_t,#d4u_t
.long #d5u_t,#d4u_t,#d3u_t,#d2u_t, #d1u_t
d2s_t .long #d1s_t,#d2s_t,#d3s_t,#d4s_t
.long #d5s_t,#d4s_t,#d3s_t,#d2s_t, #d1s_t
d2m_t .long #d1m_t,#d2m_t,#d3m_t,#d4m_t
.long #d5m_t,#d4m_t,#d3m_t,#d2m_t, #d1m_t
d2l_t .long #d1l_t,#d2l_t,#d3l_t,#d4l_t
.long #d5l_t,#d4l_t,#d3l_t,#d2l_t, #d1l_t
;UNDER hoop
#d1u_t .word 1-1
.word DUNKS2_SEQ
#d2u_t .word 1-1
.word DUNKA3_SEQ
#d3u_t .word 1-1
.word DUNKU3_SEQ
#d4u_t .word 1-1
.word DUNKE_SEQ
#d5u_t .word 1-1
.word DUNKLAY6_SEQ
;NEAR hoop
#d1s_t .word 2-1
.word DUNKU3_SEQ,DUNKLAY3C_SEQ
#d2s_t .word 1-1
.word DUNKLAY3C_SEQ
#d3s_t .word 1-1
.word DUNKLAY3C_SEQ
#d4s_t .word 1-1
.word DUNKA2_SEQ
#d5s_t .word 1-1
.word DUNKE_SEQ
;MEDIUM to hoop
#d1m_t .word 6-1
.word DUNKA2_SEQ,DUNKC_SEQ,DUNKLAY3_SEQ,DUNKLAY3A_SEQ
.word DUNKLAY5_SEQ,DUNKLAY6_SEQ
#d2m_t .word 13-1
.word DUNKP_SEQ,DUNKR_SEQ,DUNKA2_SEQ,DUNKC_SEQ,DUNKA_SEQ
.word DUNKLAY8_SEQ,DUNKLAY_SEQ,DUNKLAY2_SEQ,DUNKLAY7A_SEQ
.word DUNKLAY5_SEQ,DUNKLAY6_SEQ,DUNKLAY7_SEQ,DUNKJ2_SEQ
.word DUNKLAY3_SEQ
#d3m_t .word 14-1
.word DUNKJ2_SEQ,DUNKP3_SEQ,DUNKQ_SEQ,DUNKLAY8_SEQ
.word DUNKLAY_SEQ,DUNKLAY2_SEQ,DUNKLAY3_SEQ,DUNKLAY3A_SEQ
.word DUNKLAY5_SEQ,DUNKLAY6_SEQ,DUNKLAY7_SEQ,DUNKLAY7A_SEQ
.word DUNKT_SEQ,DUNKD_SEQ
#d4m_t .word 5-1
.word DUNKQ_SEQ,DUNKE2_SEQ,DUNKJ_SEQ,DUNKD_SEQ
.word DUNKLAY6_SEQ
#d5m_t .word 2-1
.word DUNKE2_SEQ,DUNKLAY6_SEQ
;FAR from hoop
#d1l_t .word 7-1
.word DUNKP3_SEQ,DUNKU2_SEQ,DUNKLAY_SEQ,DUNKLAY3C_SEQ
.word DUNKLAY3_SEQ,DUNKLAY3B_SEQ,DUNKLAY7_SEQ
#d2l_t .word 10-1
.word DUNKLAY2_SEQ,DUNKLAY3_SEQ,DUNKLAY3A_SEQ,DUNKLAY7A_SEQ
.word DUNKLAY7_SEQ,DUNKLAY8_SEQ,DUNKA_SEQ,DUNKB3_SEQ
.word DUNKB2_SEQ,DUNKLAY_SEQ
#d3l_t .word 12-1
.word DUNKG_SEQ,DUNKG2_SEQ,DUNKJ_SEQ,DUNKQ_SEQ
.word DUNKD_SEQ,DUNKLAY_SEQ,DUNKLAY2_SEQ,DUNKLAY3_SEQ
.word DUNKLAY3A_SEQ,DUNKLAY6_SEQ,DUNKLAY7_SEQ,DUNKLAY8_SEQ
#d4l_t .word 4-1
.word DUNKV2_SEQ,DUNKJ_SEQ,DUNKLAY6_SEQ,DUNKG_SEQ
#d5l_t .word 3-1
.word DUNKP_SEQ,DUNKW3_SEQ,DUNKLAY6_SEQ
#****************************************************************************
;Set of dunks for #1 skill players
d1u_t .long #d1u_t,#d2u_t,#d3u_t,#d4u_t
.long #d5u_t,#d4u_t,#d3u_t,#d2u_t, #d1u_t
d1s_t .long #d1s_t,#d2s_t,#d3s_t,#d4s_t
.long #d5s_t,#d4s_t,#d3s_t,#d2s_t, #d1s_t
d1m_t .long #d1m_t,#d2m_t,#d3m_t,#d4m_t
.long #d5m_t,#d4m_t,#d3m_t,#d2m_t, #d1m_t
d1l_t .long #d1l_t,#d2l_t,#d3l_t,#d4l_t
.long #d5l_t,#d4l_t,#d3l_t,#d2l_t, #d1l_t
;UNDER hoop
#d1u_t .word 1-1
.word DUNKS2_SEQ
#d2u_t .word 1-1
.word DUNKA3_SEQ
#d3u_t .word 1-1
.word DUNKD2_SEQ
#d4u_t .word 1-1
.word DUNKE_SEQ
#d5u_t .word 1-1
.word DUNKLAY6_SEQ
;NEAR hoop
#d1s_t .word 2-1
.word DUNKLAY7_SEQ,DUNKLAY6_SEQ
#d2s_t .word 2-1
.word DUNKLAY7_SEQ,DUNKLAY6_SEQ
#d3s_t .word 2-1
.word DUNKLAY3C_SEQ,DUNKLAY7_SEQ
#d4s_t .word 2-1
.word DUNKLAY3C_SEQ,DUNKLAY6_SEQ
#d5s_t .word 2-1
.word DUNKLAY3C_SEQ,DUNKLAY6_SEQ
;MEDIUM to hoop
#d1m_t .word 1-1
.word DUNKLAY6_SEQ
#d2m_t .word 2-1
.word DUNKLAY5_SEQ,DUNKLAY6_SEQ
#d3m_t .word 2-1
.word DUNKLAY5_SEQ,DUNKLAY6_SEQ
#d4m_t .word 1-1
.word DUNKLAY6_SEQ
#d5m_t .word 1-1
.word DUNKLAY6_SEQ
;FAR from hoop
#d1l_t .word 2-1
.word DUNKLAY5_SEQ,DUNKLAY6_SEQ
#d2l_t .word 2-1
.word DUNKLAY6_SEQ,DUNKLAY7_SEQ
#d3l_t .word 2-1
.word DUNKLAY6_SEQ,DUNKLAY8_SEQ
#d4l_t .word 1-1
.word DUNKLAY6_SEQ
#d5l_t .word 1-1
.word DUNKLAY6_SEQ
;Small heads!
.def Gug_h
.def BEdwrds_h
.def Brown_h
.def KAnderson_h
.def Willis_h
.def Mourn_h
.def Kukoc_h
.def Jack_h
.def Mash_h
.def Dumars_h
.def Rodman_h
.def Webber_h
.def Horry_h
.def Smits_h
.def Campbell_h
.def Baker_h
.def Rider_h
.def Morris_h
.def Mason_h
.def Starks_h
.def AHard_h
.def NAnders_h
.def Weath_h
.def Brad_h
.def KJohn_h
.def CRobinson_h
.def Rich_h
.def Payton_h
.def Mckey_h
.def Benoit_h
.def Cheaney_h
.def Robertson_h
.def Chapman_h
.def Lang_h
.def Scott_h
.def Webb_h
; .def MJohnson_h
.def Ruffin_h
Robertson_h
HDMAC Robertsn1
Chapman_h
HDMAC Chapman1
Lang_h
HDMAC Lang1
Scott_h
HDMAC Scott1
Webb_h
HDMAC Webb1
;MJohnson_h
; HDMAC MJohnson1
Ruffin_h
HDMAC Ruffin1
Gug_h
HDMAC gug1
BEdwrds_h
HDMAC BEdwrd1
Brown_h
HDMAC BROWN1
KAnderson_h
HDMAC K_AND1
Willis_h
HDMAC WILLIS1
Mourn_h
HDMAC MOURN1
Kukoc_h
HDMAC KUKOC1
Jack_h
HDMAC JACK1
Mash_h
HDMAC MASH1
Dumars_h
HDMAC DUMARS1
Rodman_h
; HDMAC ALIEN01
HDMAC RODMAN1
Webber_h
HDMAC WEBBER1
Horry_h
HDMAC HORRY1
Smits_h
HDMAC SMITS1
Campbell_h
HDMAC CAMP1
Baker_h
HDMAC BAKER1
Rider_h
HDMAC RIDER1
Morris_h
HDMAC MORRIS1
Mason_h
HDMAC MASON1
Starks_h
HDMAC STARKS1
AHard_h
HDMAC A_HARD1
NAnders_h
HDMAC N_AND1
Weath_h
HDMAC WEATH1
Brad_h
HDMAC BRAD1
KJohn_h
HDMAC K_JOHN1
CRobinson_h
HDMAC C_ROB1
Rich_h
HDMAC RICH1
Payton_h
HDMAC PAYTON1
Mckey_h
HDMAC MCKEY1
Benoit_h
HDMAC BENOIT1
Cheaney_h
HDMAC CHEAN1
; This table contains the SMALL head img. table ptrs. for the heads in
; 'CREATE PLAYER' (coresponds with mugshots_tbl in select3.asm)
;
plr_heads_small
.long Cow_h
.long Alien_h
.long Pippen_h
.long Chk_h
.long kim_h
.long fifi_h
.long Gor_h
.long LJohnson_h
.long Mik_h
.long Lis_h
.long madball_h
.long Old_h
.long jackjr_h
.long clown_h
.long mar_h
.long Ghill_h
.long Ber_h
.long Olajuwon_h
.long Fat_h
.long Ang_h
.long ape_h
.long Mourn_h
.long Fra_h
.long AHard_h
.long Guido_h
.long Gre_h
.long Pig_h
.long Kemp_h
.long cheech_h
.long Mel_h
.long Wiz_h
.long Webber_h
.long Joe_h
.long mxv_h
.long eddie_h
.long oursler_h
.long bardo_h
.long willy_h
.long eric_h
.long sean_h
.long mike_h
.long dim_h
plr_heads_small_end
.long Cow_h
.long Alien_h
.long Pippen_h
.long Chk_h
plr_heads_small_end2
SM_HEADS_CNT equ ((plr_heads_small_end-plr_heads_small)/32)
;
; This table contains the SMALL head flesh pal table ptrs. for the heads in
; 'CREATE PLAYER' (coresponds with mugshots_tbl in select3.asm)
;
.def plr_flesh_pal_tbl
plr_flesh_pal_tbl
.long COW_F
.long ALIEN_F
.long pippin_f
.long CHK_F
.long KIM_F
.long FIFI_F
.long GOR_F
.long johnson_f
.long MIK_F
.long LIS_F
.long MADBAL_F
.long OLD_F
.long JACKJR_F
.long CLOWN_F
.long MAR_F
.long GHILL_F
.long BER_F
.long Hakeem_f
.long FAT_F
.long ANG_F
.long VIKAPE_F
.long MOURN_F
.long FRA_F
.long A_HARD_F
.long GUIDO_F
.long GRE_F
.long PIG_F
.long kemp_f
.long CHEECH_F
.long MEL_F
.long WIZ_F
.long WEBBER_F
.long JOE_F
.long MXV_F
.long EDDIE_F
.long OURSL_F
.long BARD_F
.long WIL_F
.long ERI_F
.long SEA_F
.long MIKE_F
.long DIM_F
.long COW_F
.long ALIEN_F
.long pippin_f
.long CHK_F
plr_flesh_pal_tbl_end
#*****************************************************************************
*
* a9 = meter to display on which side? 0 or 1
* a11 = player number (0 - 3 )
GETUP_SIZE equ 80 ;102 ;174 ;99
MAX_TIME equ 6*TSEC
INV_MULT equ 256*GETUP_SIZE/MAX_TIME
ONSCR_X equ 173+1
OFFSCR_X equ 221
STRUCTPD
LONG IPTR_FRAME
LONG IPTR_GREEN
WORD DISPLAY_VAL
LONG BUTN_PROC
SUBR jumpball_meter
;Human players only!
.ref PSTATUS
.ref plyrproc_t
SLEEPK 11
.ref HALT
#lpx move @HALT,a0
jrz #contx
SLEEPK 1
jruc #lpx
#contx
; move @PSTATUS,a0
; btst a11,a0
; jaz SUCIDE
SLEEP 40
clr a0
move a0,*a13(DISPLAY_VAL)
;set our x-position based on PLYR_SIDE
movi [OFFSCR_X,0],a10
move a9,a9
jrnz #p2
dec a10
neg a10
#p2
.ref RECVRBLK,JMPBAL_R,JMPBAL_L
movi RECVRBLK,a2 ;* image (green bar)
movi [109,0],a1 ;y pos
movi 1801h,a3 ;z pos
callr #begin_obj
move a8,*a13(IPTR_GREEN),L
movi JMPBAL_R,a2 ;* image (frame)
move a9,a9
jrnz #p2_meter
movi JMPBAL_L,a2 ;* image (frame)
#p2_meter
movi [189,0],a1 ;y pos
movi 1800h,a3 ;z pos
callr #begin_obj
move a8,*a13(IPTR_FRAME),L
move a11,a10
sll 5,a10
addi plyrproc_t,a10
move *a10,a10,L
move a13,*a10(plyr_meter_proc),L
movi 200,a0
move a0,*a10(plyr_meter_time)
CREATE0 #ck_butns
move a0,*a13(BUTN_PROC),L
SUBR slide_offscr
;Don't allow a meter to come out for awhile (unless flung)
movk 10,a11
#offscr_loop
move a11,a11
jrz #update
dec a11
jruc #cont
#update
movi [OFFSCR_X,0],a0
callr #set_x
move *a10(plyr_meter_time),a14
jrnz #onscr
#cont
SLEEPK 1
jruc #offscr_loop
#exit_offscr
SLEEP 40
movk 10,a11
#exit_loop
movi [OFFSCR_X,0],a0
callr #set_x
SLEEPK 1
dsjs a11,#exit_loop
move *a13(IPTR_FRAME),a0,L
calla DELOBJ
move *a13(IPTR_GREEN),a0,L
calla DELOBJ
move *a13(BUTN_PROC),a0,L
calla KILL
DIE
#onscr
move a14,a11
movi GETUP_SIZE,a0
move a0,*a13(DISPLAY_VAL)
; MOVI 0BDH,A0 ;Meter announce sound
; CALLA triple_sound
movi 120,a6
move *a10(plyr_meter_time),a5
#onscr_loop
movi [ONSCR_X,0],a0
callr #set_x
move *a10(plyr_meter_time),a7
movi GETUP_SIZE,a0
mpyu a0,a7 ;* GETUP_SIZE
divu a11,a7 ;/ INITIAL GETUP TIME
move *a13(DISPLAY_VAL),a0
move a0,a2
move a0,a4
cmp a0,a7 ;has getup been incremented?
jrle #ok1
move a7,a11
movi GETUP_SIZE,a0
mpyu a0,a7 ;* GETUP_SIZE
divu a11,a7 ;/ INITIAL GETUP TIME
move a7,a3
sub a2,a3
cmpi 10,a3
jrlt #ok0
addk 9,a2
move a2,a7
move a7,a3
sub a4,a3
#ok0
srl 1,a3
sub a3,a7
#ok1
subk 1,a6
jrnz #dont_bother
move *a10(plyr_meter_time),a0
sub a0,a5
#dont_bother
PUSH a5,a6
callr #update_meter
PULL a5,a6
move a7,a7
jrz #exit_offscr
move @ditch_meter,a0
jrnz #exit_offscr
PUSHP a5,a6
SLEEPK 1
PULLP a5,a6
jruc #onscr_loop
**********
#ck_butns
movk 20,a8
#lp1 move *a10(plyr_meter_time),a0
subk 6,a0
move a0,*a10(plyr_meter_time)
SLEEPK 1
dsj a8,#lp1
#ck_butns2
.ref PCNT
move @PCNT,a0
ANDK 1,a0
jrnz #no
move *a10(plyr_meter_time),a0
inc a0
cmpi 200,a0
jreq #stop2
move a0,*a10(plyr_meter_time)
#no
move @PSTATUS,a0
btst a11,a0
jrnz #conta
;Jumpball player is not in game
;Check teammate
cmpi 1,a11
jrnz #tm2
btst 0,a0
jrz #drone_taps
;Have player 0 control meter
clr a0
jruc #getbut
#tm2 btst 3,a0
jrz #drone_taps
;Have player 3 control meter
movk 3,a0
jruc #getbut
#drone_taps
movi 190,a0
.ref RNDPER
calla RNDPER
jrhi #yes
jruc #no2
#conta move a11,a0
.ref get_but_val_down
#getbut calla get_but_val_down
jrz #no2
#yes
move *a10(plyr_meter_time),a0
subk 4,a0
jrz #stop
jrn #stop
move a0,*a10(plyr_meter_time)
#no2
SLEEPK 1
jruc #ck_butns2
#stop
clr a0
#stop2
move a0,*a10(plyr_meter_time)
;Killed by creating process
SLEEP 7fffh
DIE
**********
SUBRP #set_x
move a9,a9
jrnz #p22
neg a0
#p22
; addi [200-1,0],a0 ;center of screen
addi [0afh,0],a0 ;center of screen
move a13,a14
addi IPTR_FRAME,a14
move *a14,a8,L
move *a8(OXVAL),a1,L
sub a1,a0
sra 2,a0
movk 3-1,a1
#lp move *a14+,a8,L
move *a8(OXVAL),a2,L
add a0,a2
move a2,*a8(OXVAL),L
dsj a1,#lp
rets
**********
SUBRP #begin_obj
movi [200-1,0],a0 ;x pos
add a10,a0
movi DMAWNZ|M_SCRNREL,a4 ;DMA flags
clr a5 ;object ID
clr a6 ;x vel
clr a7 ;y vel
calla BEGINOBJ2
rets
**********
SUBRP #update_meter
move *a13(DISPLAY_VAL),a0
add a0,a7
srl 1,a7
move a7,*a13(DISPLAY_VAL)
move a7,a1
neg a1
addi GETUP_SIZE,a1
jrp #ok
clr a1
#ok movi GETUP_SIZE,a0
cmp a0,a1 ;meter can't be taller
jrle #ok2 ;than GETUP_SIZE pixels
move a0,a1
#ok2 move *a13(IPTR_GREEN),a8,L
MOVI GETUP_SIZE,A2
SUB A1,A2
MOVE A2,*A8(OSIZEY)
MOVI RECVRBLK,A0
MOVE *A0(ICTRL),A5
SRL 12,A5
MOVE A1,A3
MPYU A5,A3
MOVE *A0(ISIZEX),A5
MPYU A5,A3
MOVE *A0(ISAG),A0,L
ADD A3,A0
MOVE A0,*A8(OSAG),L
rets
#*****************************************************************************
*
* a0 = # ticks to add
* a13 = * wrestler process
SUBR inc_getup_time
PUSH a14
move *a13(plyr_meter_time),a14
cmpi 20,a14
jrlt #exit
add a0,a14
move a14,*a13(plyr_meter_time)
#exit
PULL a14
rets
;#*****************************************************************************
;*
;* makes your getup meter go away if you've got one out.
;
; SUBR ditch_getup_meter_a9
; PUSH a13
; move a9,a13
; callr ditch_getup_meter
; PULL a13
; rets
;
; SUBR ditch_getup_meter
;
; move *a13(GETUP_TIME),a0
; jrz #cont
; move *a13(PLYR_DIZZY),a0
; jrnz #cont
;
;;This guy has a getup meter on screen and is running out of control!
;;Cause getup meter to slide off screen.
;
; move *a13(METER_PROC),a0,L
; jrz #cont ;skip if we don't have a meter.
; PUSH a8,a9,a10
; move *a0(PA8),a8,L
; move *a0(PA9),a9,L
; move *a0(PA10),a10,L
; movi GETUP_PID,a1
; movi slide_offscr,a7
; calla XFERPROC
; PULL a8,a9,a10
;
;#cont rets
;********************************
;* Spark from flaming ball (Process)
;* A8/A11=*Ball obj
;
; SUBR ball_spark
;
; movi spark_l,a9
;
; move *a11(OXVEL),a6,L
; sra 2,a6
; movk >a,a0
; callr rnd
; subk 5,a0
; sll 14,a0 ;XVel
; add a0,a6
;
;; movk 3,a0
;; callr rnd
;; jrnz #xnorm
;; sll 2,a6 ;*4
;#xnorm
;
; move *a11(OYVEL),a7,L
; movk >3,a0
; callr rnd
; sll 16,a0 ;YVel
; neg a0
; add a0,a7
;
;
;; move *a11(OYVEL),a7,L
;; sra 2,a7
;; movk >a,a0
;; callr rnd
;; subk 5,a0
;; sll 15,a0 ;YVel
;; add a0,a7
;; neg a7
;;
;; movk 3,a0
;; callr rnd
;; jrnz #ynorm
;; sll 2,a7 ;*4
;#ynorm
; move *a8(OZPOS),a3
; movk 3,a0
; callr rnd
; subk 2,a0
; add a0,a3 ;-2 to 1
;
; move *a8(OXPOS),a0
;; move *a8(OSIZEX),a2
;; srl 1,a2 ;/2
;; add a2,a0
; move *a8(OXANI+16),a2
; add a2,a0
; move *a8(OYPOS),a1
; move *a8(OSIZEY),a2
; srl 1,a2 ;/2
; add a2,a1
;
; sll 16,a0
; sll 16,a1
; movi spark1,a2
; movi DMAWNZ|M_3D|M_NOSCALE,a4
; movi CLSDEAD,a5
; calla BEGINOBJ2
;
; move *a11(OZVEL),a2,L
; sra 2,a2 ;/4
; movk >f,a0
; callr rnd
; subk 7,a0
; sll 14,a0
; add a0,a2
; move a2,*a8(OZVEL),L
;
;
; movk 3,a11
;; callr rnd
;; addk 1,a0
;; move a0,a11
; jruc #strt
;
;#lp dsj a10,#noani
;#strt
; move a11,a10
; move *a9,a0,L
; jrz #die ;noani
; addk 32,a9
;
; move *a8(OCTRL),a1
; calla obj_aniq
;#noani
; SLEEPK 3
; move *a8(OYVEL),a2,L
; addi GRAV*2,a2
; move a2,*a8(OYVEL),L
; jrn #lp ;Going up?
; move *a8(OYVAL),a1,L
; jrlt #lp ;Above gnd?
; clr a1
; move a1,*a8(OYVAL),L
;
;; move @HCOUNT,a14
;; sll 32-2,a14
;; jrz #die
;; neg a2
;; sra 3,a2
;; move a2,*a8(OYVEL),L
;; cmpi -(GRAV*2),a2
;; jrlt #lp
;;
;
;#die
; clr a0
; move a0,*a8(OXVEL),L
; move a0,*a8(OYVEL),L
; move a0,*a8(OZVEL),L
;; SLEEPK 4
;
; jauc DELOBJDIE
;
;
;spark_l
; .long spark1
; .long spark2
; .long spark3
; .long spark4
; .long spark5
; .long spark1
; .long spark2
; .long spark3
; .long spark4
; .long spark5
; .long spark1
; .long spark2
; .long spark3
; .long spark4
; .long spark5,0
; .endif
; movi STATIC_p,a8
; movi cycram,a9
; movi [1,62],a10 ;1st,last color
; movk 5,a11 ;Rate
; CREATE CYCPID,COLCYC
;---------------------------------------
.if 0 ;vid clips .if 0
jruc #x ;Skip clips for ROMKIT
calla READ_DIP
btst DPNOVIDCLIPS_B,a0
jrnz #x ;Clips off?
calla system_savegame
movi >12345678,a0
move a0,@clipsrunning,L
movk INPLYRINFO,a0
move a0,@GAMSTATE
clr a0
move a0,@dtype ;2D
move a0,@WORLDTLX,L
move a0,@WORLDTLY,L
JSRP scrn_scaleininit
movi half_mod,a0
move a0,@BAKMODS,L
calla BGND_UD1
SLEEPK 2
JSRP scrn_scalein
; movi 4<<10+4<<5+4,a0
clr a0
move a0,@IRQSKYE ;background color
CREATE0 plyr_jscrowdsnda
SLEEPK 10
; SOUND1 report_snd
movi -1,a0
move a0,@dpageflip ;No erasure
#test
movk 2,a5 ;# clips to show
clr a6
#lp
move a6,a0
addk 1,a6
sll 5,a0
addi #xy_t,a0
move *a0+,a10,L ;XY
move @clipbits,a2,L
cmpi >3ffff,a2 ;18 bits
jrlo #ok
clr a2
#ok
#crlp movk 18-1,a0 ;Total # clips
calla RNDRNG0
btst a0,a2
jrnz #crlp ;Have already shown?
movk 1,a14 ;Set bit
sll a0,a14
or a14,a2
move a2,@clipbits,L
.if CLIPTEST
clr a0
.endif
sll 5,a0
addi #mv_t,a0
move *a0,a8,L
clr a9
PUSHP a5,a6
PUSHP a8
move a10,a0
sll 32-12,a0
srl 7,a0 ;X
move a10,a1
srl 12,a1
sll 16,a1 ;Y
movi scobars,a2
movi 500,a3 ;Z
movi DMAWNZ|M_NOCOLL|M_SCRNREL,a4
movi CLSDEAD,a5
clr a6
clr a7
calla BEGINOBJ2
SLEEPK 30
calla DELOBJA8
PULLP a8
PUSHP a10
.ref movie_run
JSRP movie_run
PULLP a10
PULLP a5,a6
dsj a5,#lp
.if CLIPTEST
jruc #test ;Infinite loop
.endif
movi TSEC*1+30,a10
#butlp
SLEEPK 1
.ref get_all_buttons_cur
calla get_all_buttons_cur
move a0,a0
jrnz #exit1
dsj a10,#butlp
#exit1
calla display_blank
clr a0
move a0,@clipsrunning,L
calla system_restoregame
#x RETP
plyr_jscrowdsnda
CREATE0 scrms
SLEEP 40
SOUND1 cheer1_snd
SOUND1 cheer2_snd
SLEEP 35
SOUND1 cheer1_snd
SOUND1 cheer2_snd
; SLEEP 24
; SOUND1 cheer1_snd
; SOUND1 cheer2_snd
DIE
scrms
SOUND1 scrm1_snd
SLEEP 15
SOUND1 scrm2_snd
SLEEP 15
SOUND1 scrm3_snd
SLEEP 15
SOUND1 scrm4_snd
SLEEP 15
DIE
.ref scrm1_snd,scrm2_snd,scrm3_snd,scrm4_snd
half_mod
.long htclipsBMOD
.word 0,0
.long 0
#xy_t .long (88+52*512)*8
; .long (212+52*512)*8
; .long (88+140*512)*8
.long (212+140*512)*8
#mv_t
.long V4C_F
.long V5C_F
.long V6C_F
.long V8C_F
.long V10C_F
.long V11C_F
.long V13C_F
.long V14C_F
.long V15C_F
.long V17C_F
.long V18C_F
.long V19C_F
.long V20C_F
.long V22C_F
.long V23C_F
.long VNEW2_F
.long V1C_F
.long V3C_F
; .long V7C_F
; .long VNEW1_F
.endif ;vid clips .if 0
;--------------------
.if 0 ;plyr smoketrail .if 0
#*******************************
* Smoke trail (Process)
* A8=*Src obj
* A10=*Plyr process
SUBR plyr_smoketrail
movk 15,a11
#lp CREATE0 plyr_smokepuff
SLEEPK 4
dsj a11,#lp
DIE
#*******************************
* Smoke trail (Process)
* A8=*Src obj
* A10=*Plyr process
SUBR plyr_smoketrail2
movk 20,a11
#lp CREATE0 plyr_smokepuff
SLEEPK 1
dsj a11,#lp
DIE
#*******************************
* Smoke trail puff (Process)
* A8=*Src obj
* A10=*Plyr process
SUBRP plyr_smokepuff
move *a10(plyr_dir),a10
srl 2,a10
move *a8(OZPOS),a3
movk 3,a0
callr rnd
subk 2,a0
add a0,a3 ;-2 to 1
movk 3,a0
callr rnd
sll 5,a0 ;*32
addi smoke_t,a0
move *a0,a9,L
move *a8(OXVEL),a6,L
move *a8(OYVEL),a7,L
sra 2,a6 ;/4
sra 2,a7
move *a8(OXPOS),a0
move *a8(OSIZEX),a2
srl 1,a2 ;/2
add a2,a0
move *a8(OYPOS),a1
move *a8(OSIZEY),a2
srl 1,a2 ;/2
add a2,a1
sll 4,a10 ;*16
addi mslstxy_t,a10
move *a10(8*16),a2
add a2,a0 ;+X offset
move *a10,a2
add a2,a1 ;+YO
sll 16,a0 ;X
sll 16,a1 ;Y
movi CLDB1ORNG,a2
movi DMAWNZ|M_3D|M_NOCOLL,a4 ;No collisions
movi CLSDEAD,a5
calla BEGINOBJ2
movi scale50_t,a0
move a0,*a8(ODATA_p),L
SLEEPK 3
jauc FRQDELDIE
mslstxy_t
.word 12,12,11,10,8,6,3,1 ;Y
.word 0,-1,-3,-6,-8,-10,-11,-12 ;X
.word -12,-12,-11,-10,-8,-6,-3,-1
.word 0,1,3,6,8,10,11,12
.word 12,12,11,10,8,6,3,1
.endif ;plyr smoketrail .if 0
;---------------------------------------
.if 0 ;NOP out free throw, plyr alignment dots
#*******************************
* Control players for free throws (Process)
* A11=Team who scored (0=2, !0=1)
STRUCTPD
WORD pft_pball ;Plyr # (0-3) who gets ball
WORD pft_pball2 ;P# who gets ball passed to him
APTR pft_bbobj ;*Backboard/crowd object
SUBR plyr_freethrow
jruc plyr_takeoutball
movi TSEC,a10 ;>Let shot finish
#lp movi -1,a0
move a0,@ballpnum
SLEEPK 1
dsj a10,#lp
movi [20,0],a0
movi [20,0],a1
; movi ftbackbd,a2
movi [500,0],a3 ;Z
movi DMAWNZ|M_NOCOLL|M_SCRNREL,a4
movi CLSDEAD,a5
clr a6
clr a7
calla BEGINOBJ2
move a8,*a13(pft_bbobj),L
movk 1,a0
callr plyr_setac
clr a2
movk 2,a9 ;A9=1st p# of team on defense
movi plyrproc_t,a0
move a11,a11
jrz #t1
movk 2,a2
clr a9
addi 32*2,a0
#t1
move *a0+,a8,L ;A8=*Proc of plyr who gets ball
move *a0+,a7,L
move *a8(plyr_balldist),a0
move *a7(plyr_balldist),a1
cmp a1,a0
jrle #1st ;Closer?
move a7,a8
addk 1,a2 ;2nd in team
#1st
move a2,*a13(pft_pball)
XORK 1,a2
move a2,*a13(pft_pball2)
movi TSEC*4,a10 ;>Get ball
#gblp
movi -1,a0
move a0,@ballpnum
SLEEPK 1
callr plyrtob_moveo3
move @ballobj_p,a3,L
move *a3(OXPOS),a0
addk 6,a0
move *a3(OZPOS),a1
move *a13(pft_pball),a2
callr plyrtob_seekxy
move @ballpnum,a0
jrn #gbcnt
cmp a0,a2
jreq #gotball
#gbcnt dsj a10,#gblp
#gotball
move *a13(pft_pball),a0
move a0,@ballpnum
movi TSEC*3,a10 ;>Run out of bounds
#outlp
SLEEPK 1
callr plyrtob_moveo3
movi -370,a0
move a11,a11
jrz #outl ;Team2 on def
neg a0
#outl addi WRLDMID,a0
move a0,a3
movi CZMID-20,a1
move *a13(pft_pball),a2
callr plyrtob_seekxy
jrz #outofb
; move *a8(PA8),a2,L ;Get * obj
; move *a2(OXPOS),a0
; move *a2(OXANI+16),a14
; add a14,a0
; abs a0
; abs a3
; sub a0,a3
; subk 20,a3
; jrlt #outofb
dsj a10,#outlp
#outofb
movi TSEC*3,a10 ;>Wait for other 3 to get in place
#wtlp SLEEPK 1
callr plyrtob_moveo3
jrz #inpos
dsj a10,#wtlp
#inpos
move *a13(pft_pball),a10 ;>Pass with turbo
sll 4,a10 ;*16
addi P1CTRL,a10
movi >60,a0
move a0,*a10
SLEEPK 10
clr a0
move a0,*a10
SLEEP 40
clr a0
callr plyr_setac
move *a13(pft_bbobj),a0,L
calla DELOBJ
DIE
********************************
* Start an alignment dot for a player
* A13=*Plyr proc
* Trashes scratch
SUBRP plyr_getgndaligndot
PUSH a2,a3,a4,a5,a6,a7,a8
clr a0 ;X
clr a1 ;Y
movi CZMIN,a3 ;Z
movi #alignimg_t,a2
movi >800c|M_NOCOLL|M_3D|M_NOSCALE,a4
movi CLSDEAD,a5
clr a6
clr a7
calla BEGINOBJ
movi >101,a0
move a0,*a8(OCONST)
movi -300,a0
move a0,*a8(OMISC) ;Z offset
move a8,*a13(plyr_aligndot_p),L
PULL a2,a3,a4,a5,a6,a7,a8
rets
********************************
* Set alignment dot to players position
* A8=*Plyr obj
* A13=*Plyr proc
* Trashes scratch
SUBRP plyr_setgndaligndot
PUSH a2,a3,a4,a5,a6,a7
callr anipt_getsclxy
move *a8(OXVAL),a14,L
add a14,a0
move *a13(plyr_aligndot_p),a2,L
move a0,*a2(OXVAL),L
move *a8(OZPOS),a14
addi 300,a14
move a14,*a2(OZPOS)
PULL a2,a3,a4,a5,a6,a7
rets
.endif
;---------------------------------------
.if 0 ;NOP out board shatter, shards
#*******************************
* Shatter backboard (Process)
SUBRP board_shatter
;FIX!!!
DIE
SOUND1 explode_snd
SOUND1 ohmy
CREATE0 board_glssnd
movk 10,a1
move a1,*a0(PTIME)
move @ballpnumshot,a11
movk 10,a8
move a11,a0
subk 2,a0
jrnz #n0
addk 1,a0
#n0 move a0,@bbshatter
#shlp
movk 13,a2
#shlp2 CREATE0 board_shard
dsj a2,#shlp2
SLEEPK 1
dsj a8,#shlp
DIE
board_glssnd
;Turmell
SLEEPK 10
SOUND1 explode_snd
SLEEPK 20
SOUND1 glass_snd
DIE
********************************
* Flying shard of glass (Process)
* A11=Plyr # who shot the ball (0-3)
STRUCTPD
APTR shd_ani1st_p ;*1st ani_l pos
SUBRP board_shard
movk 10,a0
callr rndrng0
sll 5,a0 ;*32
addi #shard_t,a0
move *a0,a9,L
move *a9+,a0,L
PUSHP a0
move a9,*a13(shd_ani1st_p),L
movk >f,a0
callr rnd
subk 5,a0
move a0,a6
sll 13,a6 ;XVel
movk 3,a0
callr rnd
jrnz #xnorm
sll 2,a6 ;*4
#xnorm
movk >f,a0
callr rnd
subk 6,a0
move a0,a7
sll 14,a7 ;YVel
movk 3,a0
callr rnd
jrnz #ynorm
sll 2,a7 ;*4
#ynorm
movi 36,a0
callr rndrng0
move a0,a1
neg a1 ;Y offset
movi HOOPLX-13,a0
subk 2,a11
jrge #p23
movi HOOPRX+13,a0
neg a6
#p23
sll 16,a0
addi HOOPY,a1
sll 16,a1
movi shard1_1,a2
movi CZMID,a3
movi DMAWNZ|M_3D|M_NOSCALE,a4
movi CLSDEAD,a5
calla BEGINOBJ2
movk 7,a0
callr rnd
subk 4,a0
sll 16,a0
move a0,*a8(OZVEL),L
movk 1,a0
callr rnd
addk 1,a0
move a0,a11
jruc #strt
#lp dsj a10,#noani
#strt
move a11,a10
; move *a9+,a10
; jrz #x
move *a9+,a0,L
jrnz #ani
move *a13(shd_ani1st_p),a9,L
move *a9+,a0,L
#ani
move *a8(OCTRL),a1
calla obj_aniq
#noani
SLEEPK 1
move *a8(OYVEL),a2,L
addi GRAV,a2
move a2,*a8(OYVEL),L
jrn #lp ;Going up?
move *a8(OYVAL),a1,L
jrlt #lp ;Above gnd?
clr a1
move a1,*a8(OYVAL),L
move @HCOUNT,a14
sll 32-2,a14
jrz #shatter
neg a2
sra 2,a2
move a2,*a8(OYVEL),L
cmpi -(GRAV*2),a2
jrlt #lp
#shatter
clr a0
move a0,*a8(OXVEL),L
move a0,*a8(OYVEL),L
move a0,*a8(OZVEL),L
; movk 3,a0
; callr rnd
; sll 5,a0 ;*32
; addi #shat_t,a0
; move *a0,a9,L
PULLP a9
movk 3,a10
jruc #strt2
#lp2
; dsj a10,#noani2
; movk 2,a10
move *a8(OCTRL),a1
calla obj_aniq
#noani2
SLEEPK 1
#strt2 move *a9+,a0,L
jrnz #lp2
jauc DELOBJDIE
#shard_t
.long s1_t,s2_t,s3_t,s4_t,s5_t,s6_t,s7_t,s8_t
.long s1_t,s6_t,s8_t
s1_t
.long st4_t
.long shard1_1
.long shard1_2
.long shard1_3
.long shard1_4
.long shard1_5
.long shard1_6
.long shard1_7
.long shard1_8
.long 0
s2_t
.long st3_t
.long shard2_1
.long shard2_2
.long shard2_3
.long shard2_4
.long shard2_5
.long shard2_6
.long shard2_7
.long shard2_8
.long 0
s3_t
.long st2_t
.long shard3_1
.long shard3_2
.long shard3_3
.long shard3_4
.long shard3_5
.long shard3_6
.long shard3_7
.long shard3_8
.long shard3_9
.long shard3_10
.long shard3_11
.long shard3_12
.long 0
s4_t
.long st1_t
.long shard4_1
.long shard4_2
.long shard4_3
.long shard4_4
.long shard4_5
.long shard4_6
.long shard4_7
.long shard4_8
.long shard4_9
.long shard4_10
.long 0
s5_t
.long st2_t
.long shard5_1
.long shard5_2
.long shard5_3
.long shard5_4
.long shard5_5
.long shard5_6
.long shard5_7
.long shard5_8
.long 0
s6_t
.long st4_t
.long shard6_1
.long shard6_2
.long shard6_3
.long shard6_4
.long shard6_5
.long shard6_6
.long shard6_7
.long shard6_8
.long 0
s7_t
.long st2_t
.long shard7_1
.long shard7_2
.long shard7_3
.long shard7_4
.long shard7_5
.long shard7_6
.long shard7_7
.long shard7_8
.long shard7_9
.long shard7_10
.long 0
s8_t
.long st4_t
.long shard8_1
.long shard8_2
.long shard8_3
.long shard8_4
.long shard8_5
.long shard8_6
.long shard8_7
.long shard8_8
.long shard8_9
.long shard8_10
.long 0
;#shat_t
; .long st1_t,st2_t,st3_t,st4_t
st1_t .long shat1_1
.long shat1_2
.long shat1_3
.long shat1_4
.long shat1_5
.long 0
st2_t .long shat2_1
.long shat2_2
.long shat2_3
.long shat2_4
.long shat2_5
.long 0
st3_t .long shat3_1
.long shat3_2
.long shat3_3
.long shat3_4
.long shat3_5
.long 0
st4_t .long shat4_1
.long shat4_2
.long shat4_3
.long shat4_4
.long shat4_5
.long 0
.endif
;---------------------------------------
.end