;Tap thru every fucking delay ;Into ring easier ;Drain from my meter into his on squeeze move ;Fix immobilize - doesn't allow stands from head hold or fire punch angle swaps ;Blood from broken arm ;Revive after death ;Fix all action_tables to read dual buttons! We miss button hits... ;Make alt arena pals come up rarely, or button combo! ;Lex club somebody down from in close super punch ;Fix end of round/game pin/move time/stuff ;Fix convulse on all pins ;Out of ring slide backs ;Fix shawn run/stomp ;Penalize missed ghosts ;Do some 5x damage moves, etc. ;Flash player on powerups! ;Stop near rope pile driver zeroing of y vel ;Fix flying kicks in place, looks stupid, be successful... ;Buyin count - repeated ladder position - Jake! ;Fix shawn flip toss ;Fix head hold speeds/look ;Don't knock me down with 1 pixel, and am blocking ;Blocks slide velocity ;Two bozo modes on aggressor head hold - 2 presses of supers does kick ;Flying kick start rules / like clothesline ;Add smoke whisps ;fire moves ;make flykick not miss on bounce! ;Damage bug from combo ;Wrong guy awarded victory ;Fix all at_types, including at_leaping ;Whack on buttons bozo mode ;Fix frankensteiner into blocker ;Clothesline stick on blocker ;Flykick off of blocker up into air ;Get out of overhead ;Get out of chokehold ;Kick toss out of ring ;Wrong person wins ;HIGHER YVEL ON TURNBUCKLE STUFF ;RING ENTRANCE EASIER ;Urn in takers hand at end ;Do our own auto pin ;Z on pin ;Buckle drop after being hit! ;Immobilize bugs ;Shawn dead, but still in puppet mode ;Make tombstone smash work on ground opponent ;reverse piledriver/neckbrkr for und ;Tombstone smash sound ;Killed in midst of head held hits - for everyone! ;Frankensteiner reversal doesn't jump up high! Yes it does! ;Reversals don't work! ;Show fast victory time ;Put in new artwork ;Whack out of fast victory - it selected razor ;Make spirits code/art cooler ;Redo head grabs ;Eyes tumble from head on eye gouge ;Fix pal options - button combo at start - Blue curtain is good ;Fling guy into wrong direction ;Fix razor knee into gut from head hold ;Doink pin toss ;Flash screen white ;Sliding choke move - faster? ;Fix taker smash snd ;Fix taker clobber snd ;Fix big boots, read kick & skick buttons ;Debris from broken arm ;Place specific speech calls where needed! (Ex. Arm break "Here it comes") ;High scream when shawn nabs you on charge suplex ************************************************************** * * Software: Jamie Rivett * Initiated: 9/3/93 * * COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. * ************************************************************** .file "doink.asm" .title "doink specific game code" .width 132 .option b,d,l,t .mnolist .include "macros.h" .include "jjxm.h" .include "mproc.equ" ;Mproc equates .include "display.equ" ;Display proc equates .include "gsp.equ" ;Gsp asm equates .include "sys.equ" .include "game.equ" .include "plyr.equ" .include "anim.equ" .include "audit.equ" .include "sound.h" .include "ring.equ" .include "lifebar.h" .include "damage.equ" ****************************************************************************** * EXTERNAL REFERENCES .ref DO_REVERSAL,DO_REVERSAL_MESS,FIND_AND_KILL_ENDLESS .ref ADD_IF_SILENT,JUMP_ROPES,CLIMB_ROPES .ref check_dizzy .ref create_damage_points .ref set_getup_time .ref get_punch_dtime .ref get_rope_x .ref tally_damage,clear_damage_log .ref inc_getup_time .ref change_anim1,change_anim1a .ref change_anim2,change_anim2a .ref process_ptrs .ref keep_attached .ref get_opp_plyrmode .ref wres_collis_off .ref convert_facing .ref check_secret_moves .ref change_walk_anim .ref set_rotate_anim .ref execute_walk .ref bounce_off_ropes .ref climb_turnbuckle ;from CROWD.ASM .ref crowd_cheer ;from DCSSOUND.ASM .ref triple_sound ;from WRESTLE.ASM .ref calc_line_x .ref face_each_other .ref slide_offscr .ref BONUS_MESS ;animation sequence .ref dnk_3_pile_driver_anim .ref dnk_2_push2_anim .ref start_run_anim .ref dnk_4_earslap_anim .ref dnk_2_earslap_anim .ref dnk_4_slap_anim .ref dnk_2_slap_anim ; .ref dnk_4_slap2_anim ; .ref dnk_2_slap2_anim .ref dnk_head_hit_dizzy_anim .ref dnk_knockdwn_anim .ref dnk_4_hammer_anim .ref wres_slave_anim .ref dnk_zip_anim .ref dnk_stand2_anim,dnk_stand8_anim .ref dnk_stand4_anim,dnk_stand6_anim .ref dnk_torso2_anim,dnk_torso8_anim .ref dnk_torso4_anim,dnk_torso6_anim .ref dnk_2_to_4_turn_anim,dnk_8_to_6_turn_anim ;stand .ref dnk_4_to_2_turn_anim,dnk_6_to_8_turn_anim .ref dnk_4_to_6_turn_anim,dnk_6_to_4_turn_anim .ref dnk_2_to_8_turn_anim,dnk_8_to_2_turn_anim .ref dnk_4_to_8_turn_anim,dnk_6_to_2_turn_anim .ref dnk_2_to_6_turn_anim,dnk_8_to_4_turn_anim .ref dnk_2_to_4_turn2_anim,dnk_8_to_6_turn2_anim ;torso .ref dnk_4_to_2_turn2_anim,dnk_6_to_8_turn2_anim .ref dnk_4_to_6_turn2_anim,dnk_6_to_4_turn2_anim .ref dnk_2_to_8_turn2_anim,dnk_8_to_2_turn2_anim .ref dnk_4_to_8_turn2_anim,dnk_6_to_2_turn2_anim .ref dnk_2_to_6_turn2_anim,dnk_8_to_4_turn2_anim .ref dnk_walk1_f2_anim,dnk_walk2_f2_anim,dnk_walk4_f2_anim .ref dnk_walk5_f2_anim,dnk_walk6_f2_anim,dnk_walk8_f2_anim .ref dnk_walk1_f4_anim,dnk_walk2_f4_anim,dnk_walk4_f4_anim .ref dnk_walk5_f4_anim,dnk_walk6_f4_anim,dnk_walk8_f4_anim .ref dnk_2_punch_anim,dnk_4_punch_anim .ref dnk_2_buzz_anim,dnk_4_buzz_anim .ref dnk_2_buzz2_anim,dnk_4_buzz2_anim .ref dnk_2_butt_anim,dnk_4_butt_anim .REF dnk_combo_uppercut_to_head_anim .ref dnk_4_combo_kick_anim .REF CHECK_COMBO_GO .ref dnk_2_kick_anim,dnk_4_kick_anim .ref dnk_2_spin_kick_anim,dnk_4_spin_kick_anim .ref dnk_2_knee_anim,dnk_4_knee_anim .ref dnk_2_box_anim,dnk_4_box_anim .ref dnk_run_anim,dnk_run2_anim .ref dnk_4_blbowdrop_anim ; .ref dnk_4_bjump_anim .ref dnk_2_lbowdrop_anim,dnk_4_lbowdrop_anim .ref dnk_2_grabfling_anim .ref dnk_4_grabfling_anim .ref dnk_heldoh_anim .ref dnk_diveofftb_anim .ref dnk_fly_cline_anim .ref dnk_flying_kick_anim ; .ref dnk_sflying_kick_anim .ref dnk_4_head_hit2_anim .ref dnk_2_head_hit2_anim .ref dnk_4_head_hit_anim,dnk_head_hit3_anim .ref dnk_2_head_hit_anim,dnk_head_hit2_anim .ref dnk_fall_back_anim .ref dnk_2_faceup_getup_anim .ref dnk_4_faceup_getup_anim .ref dnk_4_losebal_dizzy_anim .ref dnk_hitonground_anim .ref dnk_4_stomp_anim,dnk_2_stomp_anim .ref dnk_4_bstomp_anim .ref dnk_climb_up_anim,dnk_climb_down_anim .ref dnk_4_block_anim,dnk_2_block_anim .ref dnk_2_hitblock_anim,dnk_4_hitblock_anim .ref dnk_2_hiptoss_anim,dnk_4_hiptoss_anim .ref dnk_2_hiptoss2_anim,dnk_4_hiptoss2_anim .ref dnk_4_push_anim,dnk_2_push_anim .ref dnk_4_bigboot_anim,dnk_2_bigboot_anim .ref dnk_4_losebal_anim .ref dnk_dizzy_anim .ref dnk_2_pin_anim .ref dnk_4_pin_anim ; .ref dnk_2_lockup_anim,dnk_4_lockup_anim .ref dnk_climbthru_side_anim,dnk_climbthru_bot_anim .ref dnk_climbthru_top_anim,dnk_climbin_bot_anim .ref dnk_climbin_top_anim,dnk_climbin_side_anim .ref dnk_belly_anim .ref ck_ignore ;Ignore button press? .ref dnk_pkup_chair_anim .ref dnk_3_knee_to_head_anim .ref dnk_3_knees_to_head_anim .ref dnk_uppercut_to_head_anim .ref dnk_uppercuts_to_head_anim .ref dnk_get_buzz_anim .ref dnk_3_head_hold2_anim .ref dnk_3_head_hold_anim ****************************************************************************** * SYMBOLS DEFINED IN THIS FILE ****************************************************************************** * EQUATES FOR THIS FILE #***************************************************************************** doink_secret_moves ;These secret moves are triggered only after a move list seq has ended! You ;can't hold on the last button press and have it trigger! ;Button held down moves need to be first entry .long #charge_buzz .long #earslap .long #grab_fling .long #hammer .long #hip_toss .long #neck_grab .long #boxing_pnch .long 0 ****************************************************************************** * * SPECIAL MOVE PROCESSES - Secret moves * ;a8=process of wrestler SUBR dnk_smove_table ; .long dnk_charge_flykick .long dnk_hdhold_slam .long dnk_hdhold_pile .long dnk_hdhold_combo1 .long dnk_hdhold_combo2 .long dnk_hdhold_buzz .long dnk_hdhold_anti_combo .long dnk_grab_toss_air .long dnk_walk_fast .long 0 ******************************************************************************* #charge_buzz move *a13(BUT_VAL_UP),a0 btst PLAYER_PUNCH_BIT,a0 jrz #no_punch ;FIX!! Give some jumping velocity ; move *a13(PLYRMODE),a0 ; cmpi MODE_ONTURNBKL,a0 ; jrz #no_punch move *a13(PLYRNUM),a0 calla get_punch_dtime cmpi 100,a0 ;> min? jrlt #no_punch callr #scrt_buzz setc rets #no_punch clrc rets #scrt_buzz move *a13(PLYRMODE),a0 cmpi MODE_HEADHELD,a0 jrz #out cmpi MODE_HEADHOLD,a0 jrz #out ; jrz #ok move *a13(ANIMODE),a0 btst MODE_UNINT_BIT,a0 jrnz #out ;Don't do it when he is on ground calla get_opp_plyrmode ; cmpi MODE_ONGROUND,a0 ; jrz #out cmpi MODE_DEAD,a0 jrz #out move *a13(PLYRMODE),a0 cmpi MODE_RUNNING,a0 jrz #leapbuzz ;If stick is toward opponent, then do sliding/leaping buzzer move *a13(STICK_VAL_CUR),a0 move *a13(NEW_FACING_DIR),a1 andi 0ch,a1 cmp a0,a1 jrnz #norm #leapbuzz FACE24 dnk,buzz2_anim calla change_anim1a rets #norm FACE24 dnk,buzz_anim calla change_anim1a rets #ok movi dnk_4_buzz_anim,a0 calla change_anim1a rets ******************************************************************************* ; BITS MASK #boxing_pnch .word B_PUNCH, J_ALL .word B_PUNCH, J_ALL .word B_PUNCH, J_ALL .word B_PUNCH, J_ALL .word B_PUNCH, J_ALL .word B_PUNCH, J_ALL .word B_PUNCH, J_ALL .word 8000h | 60 ;max .long scrt_glove scrt_glove move *a13(ANIMODE),a0 btst MODE_UNINT_BIT,a0 jrnz #out ;Don't do it when he is on ground calla get_opp_plyrmode cmpi MODE_ONGROUND,a0 jrz #out cmpi MODE_DEAD,a0 jrz #out cmpi MODE_HEADHELD,a0 jrz #out MOVE *A13(COMBO_COUNT),A0 JRNZ #out FACE24 dnk,box_anim calla change_anim1a WRSND W_DOINK,SPUNCH_T1,SPUNCH_T2 rets ******************************************************************************* #hammer .word B_SKICK, J_ALL .word J_TOWARD, J_REAL_LR .word J_TOWARD, J_REAL_LR .word 8000h | 32 ;max .long scrt_hammer scrt_hammer move *a13(ANIMODE),a0 btst MODE_UNINT_BIT,a0 jrnz #out move *a13(PLYRMODE),a0 cmpi MODE_ONTURNBKL,a0 jrz #out movi dnk_4_hammer_anim,a0 calla change_anim1a rets ******************************************************************************* #earslap .word B_PUNCH, J_ALL .word J_TOWARD, J_REAL_LR .word J_DOWN_TOWARD, J_REAL_LR .word J_DOWN, J_REAL_LR .word 8000h | 50 ;max .long #scrt_earslap #scrt_earslap move *a13(ANIMODE),a0 btst MODE_UNINT_BIT,a0 jrnz #out move *a13(PLYRMODE),a0 cmpi MODE_ONTURNBKL,a0 jrz #out ;Don't do it when he is on ground calla get_opp_plyrmode cmpi MODE_ONGROUND,a0 jrz #out cmpi MODE_DEAD,a0 jrz #out cmpi MODE_HEADHELD,a0 jrz #out movi dnk_4_earslap_anim,a0 calla change_anim1a rets ******************************************************************************* #neck_grab .word B_SPUNCH, J_ALL .word J_TOWARD, J_REAL_LR .word J_TOWARD, J_REAL_LR .word 8000h | 32 ;max .long #scrt_neck #scrt_neck move *a13(ANIMODE),a0 btst MODE_UNINT_BIT,a0 jrnz #out ;Don't do it when he is on ground calla get_opp_plyrmode cmpi MODE_ONGROUND,a0 jrz #out cmpi MODE_DEAD,a0 jrz #out cmpi MODE_HEADHELD,a0 jrz #out move *a13(CLOSEST_XDIST),a1 cmpi 70,a1 jrgt #std_grab movi dnk_3_head_hold2_anim,a0 calla change_anim1a rets #std_grab movi dnk_3_head_hold_anim,a0 calla change_anim1a rets ******************************************************************************* #grab_fling .word B_SPUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN .word 8000h | 10 ;max .long #scrt_grabfling #scrt_grabfling ;Make this miss, rotate to missed opponent, ;and stay rotated to flung opponent, also make ;this work from both angles! move *a13(ANIMODE),a0 btst MODE_UNINT_BIT,a0 jrnz #out ;If opponent is running, do a hip toss calla get_opp_plyrmode cmpi MODE_BOUNCING,a0 jrz #yes cmpi MODE_RUNNING,a0 jrnz #nope #yes FACE24 dnk,hiptoss_anim calla change_anim1a WRSND W_DOINK,HIPTOSS_T1,PUNCH_T2 rets #nope ;Don't fling when he is on ground calla get_opp_plyrmode cmpi MODE_HEADHELD,a0 jrz #out cmpi MODE_ONGROUND,a0 jrz #out cmpi MODE_DEAD,a0 jrz #out FACE24 dnk,grabfling_anim calla change_anim1a WRSND W_DOINK,GRABFLING_T1,PUNCH_T2 rets ******************************************************************************* #hip_toss .word B_PUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN .word 8000h | 10 ;max .long #scrt_hiptoss #scrt_hiptoss move *a13(ANIMODE),a0 btst MODE_UNINT_BIT,a0 jrnz #out ;Don't do it when he is on ground calla get_opp_plyrmode cmpi MODE_ONGROUND,a0 jrz #out cmpi MODE_BLOCK,a0 jrz #out cmpi MODE_DEAD,a0 jrz #out cmpi MODE_HEADHELD,a0 jrz #out cmpi MODE_INAIR,a0 jrz #doit cmpi MODE_INAIR2,a0 jrz #doit move *a13(CLOSEST_DIST),a0 cmpi 68h,a0 jrgt #out #doit FACE24 dnk,hiptoss_anim calla change_anim1a WRSND W_DOINK,HIPTOSS_T1,PUNCH_T2 #out rets #******************************************************************************* dnk_hdhold_slam #TIMEOUT .equ 60 #lp0 SLEEPK 1 #lp move *a8(PLYRMODE),a0 cmpi MODE_HEADHOLD,a0 jrz #cont cmpi MODE_HEADHELD,a0 jrnz #lp0 #cont clr a11 WAITSWITCH_DWN J_UP,0,#lp movi #TIMEOUT,a11 WAITSWITCH_DWN J_DOWN,0,#lp WAITSWITCH_DWN J_DOWN,0,#lp WAITSWITCH_DWN B_SKICK,J_DOWN_AWAY|J_DOWN_TOWARD,#lp move *a8(PLYRMODE),a0 cmpi MODE_HEADHOLD,a0 jrz #slam cmpi MODE_HEADHELD,a0 jrnz #lp0 ;Do reversal unless I have been immobilized! ;If not, set immobilize time for opponent and reverse move *a8(IMMOBILIZE_TIME),a14 jrnz #lp0 ;ignore CALLA DO_REVERSAL CALLA DO_REVERSAL_MESS jruc #is_reversal #slam move *a8(IMMOBILIZE_TIME),a14 jrnz #lp0 ;ignore movk 1,a10 CREATE0 BONUS_MESS #is_reversal move *a8(ATTACH_PROC),a14,L movk 15,a0 move a0,*a14(IMMOBILIZE_TIME) CALLA FIND_AND_KILL_ENDLESS .ref dnk_3_head_slam_anim movi dnk_3_head_slam_anim,a14 move a14,*a8(SPECIAL_MOVE_ADDR),L SLEEP 60 jruc #lp ******************************************************************************* #* dnk_hdhold_pile #TIMEOUT .equ 60 #lp0 SLEEPK 1 #lp move *a8(PLYRMODE),a0 cmpi MODE_HEADHOLD,a0 jrz #cont cmpi MODE_HEADHELD,a0 jrnz #lp0 #cont clr a11 WAITSWITCH_DWN J_AWAY,0,#lp movi #TIMEOUT,a11 WAITSWITCH_DWN J_TOWARD,0,#lp WAITSWITCH_DWN J_TOWARD,0,#lp WAITSWITCH_DWN B_SPUNCH,0,#lp move *a8(PLYRMODE),a0 cmpi MODE_HEADHOLD,a0 jrz #slam cmpi MODE_HEADHELD,a0 jrnz #lp0 move *a8(IMMOBILIZE_TIME),a14 jrnz #lp0 ;ignore CALLA DO_REVERSAL CALLA DO_REVERSAL_MESS jruc #is_reversal #slam move *a8(IMMOBILIZE_TIME),a14 jrnz #lp0 ;ignore movk 6,A10 ;Pile driver CREATE0 BONUS_MESS #is_reversal move *a8(ATTACH_PROC),a14,L movk 15,a0 move a0,*a14(IMMOBILIZE_TIME) CALLA FIND_AND_KILL_ENDLESS movi dnk_3_pile_driver_anim,a14 move a14,*a8(SPECIAL_MOVE_ADDR),L SLEEP 60 jruc #lp ******************************************************************************* #* dnk_hdhold_anti_combo #TIMEOUT .equ 80 #lp0 SLEEPK 1 #lp ;Is my opponent in combo mode? ; move *a8(IMMOBILIZE_TIME),a14 ; jrz #lp0 ; move *a8(CLOSEST_NUM),a0 ; X32 a0 ; addi process_ptrs,a0 ; move *a0,a0,L ; move *a0(COMBO_COUNT),a0 ; jrz #lp0 clr a11 WAITSWITCH_DWN J_UP,0,#lp movi #TIMEOUT,a11 WAITSWITCH_DWN J_UP_TOWARD,0,#lp WAITSWITCH_DWN J_TOWARD,0,#lp WAITSWITCH_DWN J_DOWN_TOWARD,0,#lp WAITSWITCH_DWN J_DOWN,0,#lp WAITSWITCH_DWN J_DOWN_AWAY,0,#lp WAITSWITCH_DWN J_AWAY,0,#lp WAITSWITCH_DWN J_UP_AWAY,0,#lp WAITSWITCH_DWN J_UP,0,#lp WAITSWITCH_DWN B_SPUNCH,0,#lp ;Is my opponent in combo mode? move *a8(CLOSEST_NUM),a0 X32 a0 addi process_ptrs,a0 move *a0,a0,L move *a0(COMBO_COUNT),a0 jrz #lp0 move *a8(ANTI_COMBO_TIME),a0 ;Time stamp .ref PCNT move @PCNT,a14 sub a0,a14 abs a14 cmpi 80,a14 jrge #lp0 ;Combo breaker message! CALLA DO_REVERSAL CALLA DO_REVERSAL_MESS clr a0 move a0,*a8(IMMOBILIZE_TIME) move *a8(ATTACH_PROC),a14,L movk 15,a0 move a0,*a14(IMMOBILIZE_TIME) CALLA FIND_AND_KILL_ENDLESS movi dnk_3_pile_driver_anim,a14 move a14,*a8(SPECIAL_MOVE_ADDR),L SLEEP 60 jruc #lp ******************************************************************************* #* dnk_hdhold_combo1 #TIMEOUT .equ 60 #lp0 SLEEPK 1 #lp move *a8(PLYRMODE),a0 cmpi MODE_HEADHOLD,a0 jrz #cont cmpi MODE_HEADHELD,a0 jrnz #lp0 #cont ;In combo mode? calla CHECK_COMBO_GO jrlt #lp0 clr a11 WAITSWITCH_DWN J_TOWARD,0,#lp movi #TIMEOUT,a11 WAITSWITCH_DWN J_TOWARD,0,#lp WAITSWITCH_DWN B_SPUNCH,J_DOWN_TOWARD|J_UP_TOWARD,#lp move *a8(PLYRMODE),a0 cmpi MODE_HEADHOLD,a0 jrz #slam cmpi MODE_HEADHELD,a0 jrnz #lp0 #slam move *a8(IMMOBILIZE_TIME),a14 jrnz #lp0 ;ignore ;Start combo rules here ; move *a8(ATTACH_PROC),a14,L ; movk 15,a0 ; move a0,*a14(IMMOBILIZE_TIME) CALLA FIND_AND_KILL_ENDLESS movi dnk_combo_uppercut_to_head_anim,a14 move a14,*a8(SPECIAL_MOVE_ADDR),L SLEEP 60 jruc #lp ******************************************************************************* #* dnk_hdhold_combo2 #TIMEOUT .equ 60 #lp0 SLEEPK 1 #lp move *a8(PLYRMODE),a0 cmpi MODE_HEADHOLD,a0 jrz #cont cmpi MODE_HEADHELD,a0 jrnz #lp0 #cont ;In combo mode? calla CHECK_COMBO_GO jrlt #lp0 clr a11 WAITSWITCH_DWN J_TOWARD,0,#lp movi #TIMEOUT,a11 WAITSWITCH_DWN J_TOWARD,0,#lp WAITSWITCH_DWN B_SKICK,J_DOWN_TOWARD|J_UP_TOWARD,#lp move *a8(PLYRMODE),a0 cmpi MODE_HEADHOLD,a0 jrz #slam cmpi MODE_HEADHELD,a0 jrnz #lp0 #slam move *a8(IMMOBILIZE_TIME),a14 jrnz #lp0 ;ignore ;Start combo rules here ; move *a8(ATTACH_PROC),a14,L ; movk 15,a0 ; move a0,*a14(IMMOBILIZE_TIME) CALLA FIND_AND_KILL_ENDLESS movi dnk_4_combo_kick_anim,a14 move a14,*a8(SPECIAL_MOVE_ADDR),L SLEEP 60 jruc #lp ******************************************************************************* #* dnk_grab_toss_air #TIMEOUT .equ 40 #lp0 SLEEPK 1 #lp clr a11 WAITSWITCH_DWN J_AWAY,0,#lp movi #TIMEOUT,a11 WAITSWITCH_DWN J_AWAY,0,#lp WAITSWITCH_DWN B_PUNCH,J_DOWN_AWAY|J_UP_AWAY,#lp move *a8(ANIMODE),a0 btst MODE_UNINT_BIT,a0 jrnz #lp move *a8(PLYRMODE),a0 cmpi MODE_HEADHOLD,a0 jreq #lp0 ;Don't do it when he is on ground PUSH a13 move a8,a13 calla get_opp_plyrmode PULL a13 ;Don't do it when he is on ground cmpi MODE_ONGROUND,a0 jrz #lp cmpi MODE_DEAD,a0 jrz #lp cmpi MODE_INAIR,a0 jrz #doit2 cmpi MODE_INAIR2,a0 jrz #doit2 move *a8(CLOSEST_NUM),a0 X32 a0 addi process_ptrs,a0 move *a0,a0,L move *a0(ATTACK_TYPE),a0 cmpi AT_LEAPING,a0 jrz #doit2 move *a8(CLOSEST_DIST),a0 cmpi 6ch,a0 jrgt #lp FACE24 dnk,hiptoss_anim move a0,*a8(SPECIAL_MOVE_ADDR),L WRSND W_DOINK,GRABFLING_T1,PUNCH_T2 SLEEP 60 jruc #lp #doit2 FACE24 dnk,hiptoss2_anim move a0,*a8(SPECIAL_MOVE_ADDR),L WRSND W_DOINK,GRABFLING_T1,PUNCH_T2 SLEEP 60 jruc #lp ******************************************************************************* #* dnk_walk_fast ;One time per match #TIMEOUT .equ 61 #lp0 SLEEPK 1 #lp move *a8(WALK_FAST),a0 jrnz #lp0 move *a8(PLYRMODE),a0 cmpi MODE_NORMAL,a0 jrnz #lp0 clr a11 WAITSWITCH_DWN J_AWAY,0,#lp movi #TIMEOUT,a11 WAITSWITCH_DWN J_DOWN_AWAY,0,#lp WAITSWITCH_DWN J_DOWN,0,#lp WAITSWITCH_DWN J_DOWN_TOWARD,0,#lp WAITSWITCH_DWN J_TOWARD,0,#lp WAITSWITCH_DWN J_UP_TOWARD,0,#lp WAITSWITCH_DWN J_UP,0,#lp WAITSWITCH_DWN J_UP_AWAY,0,#lp move *a8(PLYRMODE),a0 cmpi MODE_NORMAL,a0 jrnz #lp0 movi 30000h,a0 move a0,*a8(OBJ_YVEL),L movi 15*60,a0 move a0,*a8(WALK_FAST) ;Doink speech call ;211h movi 211h,a0 .ref ADD_VOICE calla ADD_VOICE ; calla IF_SILENT_ADD_VOICE movi 0101h,a14 move a14,*a8(OBJ_CONST) move *a8(OBJ_CONTROL),a14 andni 01111b,a14 ori M_CONNON,a14 move a14,*a8(OBJ_CONTROL) SLEEPK 3 move *a8(OBJ_CONTROL),a14 andni 01111b,a14 ori DMAWNZ,a14 move a14,*a8(OBJ_CONTROL) SLEEPK 3 movi 0101h,a14 move a14,*a8(OBJ_CONST) move *a8(OBJ_CONTROL),a14 andni 01111b,a14 ori M_CONNON,a14 move a14,*a8(OBJ_CONTROL) SLEEPK 3 move *a8(OBJ_CONTROL),a14 andni 01111b,a14 ori DMAWNZ,a14 move a14,*a8(OBJ_CONTROL) SLEEP 30 movi 0b2h,a0 ;Honk calla triple_sound SLEEPK 18 movi 0b2h,a0 ;Honk calla triple_sound SLEEPK 18 movi 0b2h,a0 ;Honk calla triple_sound #tag SLEEPK 5 move *a8(WALK_FAST),a0 jrnz #tag movi 0101h,a14 move a14,*a8(OBJ_CONST) move *a8(OBJ_CONTROL),a14 andni 01111b,a14 ori M_CONNON,a14 move a14,*a8(OBJ_CONTROL) SLEEPK 3 move *a8(OBJ_CONTROL),a14 andni 01111b,a14 ori DMAWNZ,a14 move a14,*a8(OBJ_CONTROL) DIE #******************************************************************************* ; ; STRUCTPD ; WORD #CHARGE_TIME ;UDW ; WORD #TIMEOUT ;UDW ; ; ;in: ; ; a8 = wrestler process address ; ;dnk_charge_flykick ; ;#start_over ; ;charge on stick away ; clr a14 ; move a14,*a13(#CHARGE_TIME),W ;#loop1 ; SLEEPK 1 ; ; move *a13(#CHARGE_TIME),a14,W ; inc a14 ; move a14,*a13(#CHARGE_TIME),W ; ; move *a8(STICK_VAL_CUR),a0 ; ; ;arbitrarily define TOWARD to be RIGHT. So if the opponent is to ; ; our left, flip the L|R direction bits... ; ; ;...however, if the stick isn't pointed left or right, don't do ; ;anything. ; move a0,a14 ; andi MOVE_LEFT|MOVE_RIGHT,a14 ; jrz #no_flip ; ; move *a8(NEW_FACING_DIR),a14 ; btst MOVE_LEFT_BIT,a14 ; jrz #no_flip ; xori MOVE_LEFT|MOVE_RIGHT,a0 ;#no_flip ; ; ;if we're still holding away, jump back to #loop1 ; btst MOVE_LEFT_BIT,a0 ; jrnz #loop1 ; ; ;no longer holding away... ; move *a13(#CHARGE_TIME),a14 ; cmpi 20,a14 ; jrlt #start_over ; ; ;okay, they released after holding away for 2 seconds. Give them ; ; half a second to push forward + super_kick ; ; movi TSEC/2,a14 ; move a14,*a13(#TIMEOUT) ;#loop2 ; SLEEPK 1 ; ; move *a8(BUT_VAL_DOWN),a0 ; jrnz #press ; ; move *a13(#TIMEOUT),a14 ; dec a14 ; jrz #start_over ; move a14,*a13(#TIMEOUT) ; jruc #loop2 ; ;#press ; ;we have a button press. Is is super kick? ; btst PLAYER_KICK_BIT,a0 ; ; jrz #start_over ;wrong button. No good. ; ; ; ;Check for a towards on the stick. ; move *a8(STICK_VAL_CUR),a0 ; jrz #start_over ;no stick at all. No good. ; ; move *a8(NEW_FACING_DIR),a14 ; btst MOVE_LEFT_BIT,a14 ; jrz #no_flip2 ; xori MOVE_LEFT|MOVE_RIGHT,a0 ;#no_flip2 ; btst MOVE_RIGHT_BIT,a0 ; jrz #start_over ;pooched it ; ; ;;Don't do it when he is on ground ; PUSH a13 ; move a8,a13 ; calla get_opp_plyrmode ; PULL a13 ;;Don't do it when he is on ground ; cmpi MODE_ONGROUND,a0 ; jrz #start_over ; cmpi MODE_DEAD,a0 ; jrz #start_over ; ; ;;success! Check for the UNINT bit, then queue it up. ; move *a8(ANIMODE),a14 ; btst MODE_UNINT_BIT,a14 ; jrnz #start_over ; ; movi dnk_flying_kick_anim,a14 ; move a14,*a8(SPECIAL_MOVE_ADDR),L ; ; SETMODE INAIR ; ; movi 1000h,a0 ; move a0,*a13(OBJ_XVEL),L ; ; WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 ; ; jruc #start_over #******************************************************************************* dnk_hdhold_buzz #TIMEOUT .equ 60 #lp0 SLEEPK 1 #lp move *a8(PLYRMODE),a0 cmpi MODE_HEADHOLD,a0 jrz #cont cmpi MODE_HEADHELD,a0 jrnz #lp0 #cont clr a11 WAITSWITCH_DWN J_DOWN_AWAY,0,#lp movi #TIMEOUT,a11 WAITSWITCH_DWN J_DOWN,0,#lp WAITSWITCH_DWN J_DOWN_TOWARD,0,#lp WAITSWITCH_DWN J_TOWARD,0,#lp WAITSWITCH_DWN B_PUNCH,J_UP_TOWARD|J_DOWN_TOWARD,#lp move *a8(PLYRMODE),a0 cmpi MODE_HEADHOLD,a0 jrnz #lp0 ;#slam CALLA FIND_AND_KILL_ENDLESS movi dnk_4_buzz_anim,a14 move a14,*a8(SPECIAL_MOVE_ADDR),L SLEEP 120 jruc #lp #***************************************************************************** SUBR doink_ani_init move *a13(FACING_DIR),a0 btst PLAYER_RIGHT_BIT,a0 jrnz #p1 ;Plyr 2 movi dnk_stand4_anim,a0 calla change_anim1a movi dnk_torso4_anim,a0 calla change_anim2a PUSH a10 move a13,a10 CREATE0 do_taunt PULL a10 rets #p1 movi dnk_stand2_anim,a0 calla change_anim1a movi dnk_torso2_anim,a0 calla change_anim2a rets SUBR do_taunt ;a10=*wrestler proc ;Do a taunt at start of rounds SLEEP 60 .ref HALT move @HALT,a0 jaz SUCIDE move *a10(BUT_VAL_DOWN),a0 btst PLAYER_BLOCK_BIT,a0 jrnz #tag movi 250,a0 .ref RNDPER calla RNDPER jals SUCIDE .ref current_round move @current_round,a0 cmpi 1,a0 jrz #tag ;Start of 2 or 3rd round! Only drones can taunt here! move *a10(PLYRNUM),a0 cmpi 2,a0 jalt SUCIDE ;Drone to taunt #tag PUSH a13 move a10,a13 move *a13(WRESTLERNUM),a0 X32 a0 addi #taunt_t,a0 move *a0,a0,L calla change_anim1a PULL a13 DIE .ref hrt_4_taunt_anim,rzr_4_taunt_anim,und_4_taunt_anim .ref yok_4_taunt_anim,shn_4_taunt_anim,bam_4_taunt_anim .ref lex_4_taunt_anim .ref dnk_4_taunt_anim #taunt_t .long hrt_4_taunt_anim ;0 Bret Hart .long rzr_4_taunt_anim ;1 Razor Ramon .long und_4_taunt_anim ;2 Undertaker .long yok_4_taunt_anim ;3 Yokozuna .long shn_4_taunt_anim ;4 Shawn Michaels .long bam_4_taunt_anim ;5 Bam Bam .long dnk_4_taunt_anim ;6 Doink .long 0 ;7 spare .long lex_4_taunt_anim ;8 Lex Luger .long 0 ;9 Referee #***************************************************************************** * * DOINKS CONTROL CODE * * a13 = * doink process SUBR move_doink ; movi 100h,a0 ;temp fix! ; move a0,*a13(ANI_SPEED) movi doink_secret_moves,a11 calla check_secret_moves move *a13(PLYRMODE),a0 sll 5,a0 ;x 32 addi #mode_table,a0 move *a0,a0,L call a0 rets #mode_table .long mode_normal ;0 .long mode_running ;1 .long mode_inair ;2 .long mode_attached ;3 .long mode_onground ;4 .long mode_bouncing ;5 .long mode_onturnbkl ;6 .long mode_block ;7 .long mode_dizzy ;8 .long mode_dead ;9 .long mode_oppoverhead ;10 .long mode_climbturnbkl ;11 .long mode_waitanim ;12 .long mode_grapple ;13 .long mode_master ;14 .long mode_slave ;15 .long mode_headhold ;16 .long mode_normal ;17 .long mode_normal ;18 .long mode_headheld ;19 .long mode_puppet ;20 .long mode_inair2 ;21 .long mode_normal ;22 .long mode_normal ;23 .long mode_chokehold ;24 .ref mode_choking .long mode_choking ;25 #***************************************************************************** mode_normal move *a13(ANIMODE),a0 btst MODE_UNINT_BIT,a0 jrnz #no_interrupt move *a13(I_WILL_DIE),a0 jrz #nope ;Player has died amidst a combo... ;Knock me down. movi dnk_fall_back_anim,a0 calla change_anim1a ;Zero health bar movi -10,a0 move *a13(PLYRNUM),a1 calla adjust_health SETMODE DEAD clr a0 move a0,*a13(I_WILL_DIE) rets #nope ;Perhaps we need to interrupt any sequence when a wrestler has won? calla get_opp_plyrmode cmpi MODE_DEAD,a0 jrne #opp_not_dead ;Any button causes a pin move *a13(BUT_VAL_CUR),a0 jrz #opp_not_dead ;Make sure opponent is on the ground! ;First, see if opponent is on the ground. move *a13(CLOSEST_DIST),a0 cmpi 70h,a0 jrgt #opp_not_dead move *a13(CLOSEST_ZDIST),a0 cmpi 50h,a0 jrgt #opp_not_dead move *a13(CLOSEST_NUM),a0 X32 a0 addi process_ptrs,a0 move *a0,a1,L move *a1(OBJ_YPOS),a0,L move *a1(GROUND_Y),a14 sll 16,a14 cmp a14,a0 jrgt #opp_notgnd ;Maybe check all velocities at this point ;Opponent is on ground. ;Now check to see if I'm attached to him in puppet mode! move *a13(ATTACH_PROC),a1,L jrz #done move *a1(ATTACH_PROC),a2,L cmp a2,a13 ;If I'm attached to him, let the move finish! jrz #opp_not_dead #done FACE24 dnk,pin_anim calla change_anim1a rets #opp_notgnd #opp_not_dead move *a13(IMMOBILIZE_TIME),a0 jrnz #immobilized move *a13(BUT_VAL_CUR),a0 btst PLAYER_BLOCK_BIT,a0 ;maybe have to action tables? jrz #nblk ;1 for down transitions callr #block ;& 1 for current buttons clr a0 move a0,*a13(ATTACK_TYPE) #nblk move *a13(BUT_VAL_DOWN),a0 andi 011111b,a0 X32 a0 addi #action_table,a0 move *a0,a0,L call a0 move *a13(ANIMODE),a0 btst MODE_UNINT_BIT,a0 jrnz #no_interrupt move *a13(STICK_VAL_CUR),a0 move a0,*a13(MOVE_DIR) calla climb_turnbuckle jrnc #no_climb move *a13(WRESTLERNUM),A5 MOVI CLIMB_ROPES,A2 MOVI 1000,A0 CALLA ADD_IF_SILENT rets #immobilized clr a14 move a14,*a13(MOVE_DIR) #no_climb calla execute_walk #no_interrupt rets #action_table ;This table accounts for 2 buttons being hit simultaneously. .long #z ;0 .long #punch ;1 .long #block ;2 .long #z ;3 .long #super_punch ;4 .long #super_punch,#z,#z ;5-7 .long #kick ;8 .long punchkick,#z,#z,#kick,#z,#z,#z ;9-15 .long #super_kick ;16 .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 ;Unmolested list... ; .long #z ;0 ; .long #punch ;1 ; .long #block ;2 ; .long #z ;3 ; .long #super_punch ;4 ; .long #z,#z,#z ;5-7 ; .long #kick ;8 ; .long #z,#z,#z,#z,#z,#z,#z ;9-15 ; .long #super_kick ;16 ; .long #z,#z,#z,#z,#z,#z,#z ;17-23 ; .long #z,#z,#z,#z,#z,#z,#z,#z ;24-31 ************ #z ;0 rets ************ #punch ;1 * * MODE DX DZ ACTION * ---------------------------------------------------- * normal < 50 92 headbutt * dizzy " " * normal > normal punch * dizzy " " * * onground < 120 120 elbow drop * onground > normal punch * * running hiptoss * bouncing nothing * * onturnbkl < 60 96 yank down * onturnbkl > normal punch * climbturnbkl normal punch * JJXM_INIT JJXM NORMAL, 50, 45,#punch_hdbutt,#punch_punch ;0 JJXM RUNNING, 50, 45,#punch_hdbutt,#punch_punch ;1 JJXM INAIR, 50, 45,#punch_hdbutt,#punch_punch ;2 JJXM ATTACHED, 50, 45,#punch_hdbutt,#punch_punch ;3 JJXM ONGROUND, 120,120,#punch_lbowdrop,#punch_punch ;4 JJXM BOUNCING, 50, 45,#punch_hdbutt,#punch_punch ;1 JJXM ONTURNBKL, 50, 45,#punch_hdbutt,#punch_punch ;6 JJXM BLOCK, 50, 45,#punch_hdbutt,#punch_punch ;7 JJXM DIZZY, 50, 45,#punch_hdbutt,#punch_punch ;8 JJXM DEAD, 96,112,#punch_lbowdrop,#punch_punch ;9 JJXM OPPOVERHEAD, 50, 45,#punch_hdbutt,#punch_punch ;10 JJXM CLIMBTURNBKL, #punch_punch ;11 JJXM WAITANIM, 50, 45,#punch_hdbutt,#punch_punch ;12 JJXM GRAPPLE, 50, 45,#punch_hdbutt,#punch_punch ;13 JJXM MASTER, 50, 45,#punch_hdbutt,#punch_punch ;14 JJXM SLAVE, 50, 45,#punch_hdbutt,#punch_punch ;15 JJXM HEADHOLD, 50, 45,#punch_hdbutt,#punch_punch ;16 JJXM HEADHELD, 50, 45,#punch_hdbutt,#punch_punch ;19 JJXM PUPPET, 50, 45,#punch_hdbutt,#punch_punch ;20 JJXM INAIR2, 50, 45,#punch_hdbutt,#punch_punch ;21 JJXM_END #punch_rets rets ***** #punch_punch std_punch FACE24 dnk,punch_anim calla change_anim1a WRSND W_DOINK,PUNCH_T1,PUNCH_T2 rets ***** #punch_hdbutt FACE24 dnk,butt_anim calla change_anim1a WRSND W_DOINK,HDBUTT_T1,HDBUTT_T2 rets ***** #punch_lbowdrop FACE24 dnk,lbowdrop_anim calla change_anim1a WRSND W_DOINK,LBOWDROP_T1,LBOWDROP_T2 rets ************ #block ;2 std_block FACE24 dnk,block_anim calla change_anim1 rets ************ #super_punch ;4 * * MODE DX DZ ACTION * ---------------------------------------------------- * normal < 50 92 close in super move * dizzy " " * normal > jumping punch move * dizzy " " * * onground < 144 160 super elbow drop * onground > normal punch * * running hip toss * bouncing nothing * * onturnbkl < 60 96 yank down * onturnbkl > normal punch * climbturnbkl normal punch * JJXM_INIT JJXM NORMAL, 85, 55,#spunch_special,#spunch_slap ;0 JJXM RUNNING, 85, 55,#spunch_special,#spunch_slap ;1 JJXM INAIR, 85, 55,#spunch_special,#spunch_slap ;2 JJXM ATTACHED, 85, 55,#spunch_special,#spunch_slap ;3 JJXM ONGROUND, 136,112,#spunch_lbowdrop,std_punch ;4 JJXM BOUNCING, 85, 55,#spunch_special,#spunch_slap ;1 JJXM ONTURNBKL, #spunch_slap ;6 JJXM BLOCK, 85, 55,#spunch_special,#spunch_slap ;7 JJXM DIZZY, 85, 55,#spunch_special,#spunch_slap ;8 JJXM DEAD, 96,112,#spunch_lbowdrop,std_punch ;9 JJXM OPPOVERHEAD, 85, 55,#spunch_special,#spunch_slap ;10 JJXM CLIMBTURNBKL, std_punch ;11 JJXM WAITANIM, 85, 55,#spunch_special,#spunch_slap ;12 JJXM GRAPPLE, 85, 55,#spunch_special,#spunch_slap ;13 JJXM MASTER, 85, 55,#spunch_special,#spunch_slap ;14 JJXM SLAVE, 85, 55,#spunch_special,#spunch_slap ;15 JJXM HEADHOLD, 85, 55,#spunch_special,#spunch_slap ;16 JJXM HEADHELD, do_pile ;19 JJXM PUPPET, 85, 55,#spunch_special,#spunch_slap ;20 JJXM INAIR2, 85, 55,#spunch_special,#spunch_slap ;21 JJXM_END #spunch_rets rets ***** #spunch_slap ; cmpi 60,a2 ; jrgt #norm ; cmpi 6eh,a1 ; jrlt #close ; ;#norm FACE24 dnk,slap_anim calla change_anim1a WRSND W_DOINK,SPUNCH_T1,SPUNCH_T2 rets ;#close ; cmpi 70,a1 ; jrlt #norm ; ; FACE24 dnk,slap2_anim ; calla change_anim1a ; ; WRSND W_DOINK,PUNCH_T1,PUNCH_T2 ; ; rets ***** #spunch_special ;If stick is toward opponent, then do quick punches ; move *a13(STICK_VAL_CUR),a0 ; move *a13(NEW_FACING_DIR),a1 ; andi 0ch,a1 ; cmp a0,a1 ; jrz #cont move *a13(CLOSEST_XDIST),a1 cmpi 50,a1 jrgt std_punch ; jruc #hdbutt ;#cont ; .ref dnk_3_head_hold2_anim ; movi dnk_3_head_hold2_anim,a0 ; calla change_anim1a ; ; WRSND W_DOINK,GRABHOLD_T1,GRABHOLD_T2 ; ; rets ;#hdbutt FACE24 dnk,butt_anim calla change_anim1 WRSND W_DOINK,HDBUTT_T1,HDBUTT_T2 rets ***** #spunch_lbowdrop .ref dnk_2_hair_pickup_anim .ref dnk_4_hair_pickup_anim ;If near opponents head, and facing down, do the hair grab! ;Allow hair grab from below! ; move *a13(FACING_DIR),a14 ; btst MOVE_DOWN_BIT,a14 ; jrz #no move *a13(CLOSEST_NUM),a14 X32 a14 addi process_ptrs,a14 move *a14,a14,L move *a13(OBJ_XPOS),a1,L move *a14(OBJ_XPOS),a2,L sub a2,a1 abs a1 srl 16,a1 cmpi 20h,a1 ;28 jrlt #no ;At head or feet! move *a14(OBJ_CONTROL),a14 andi M_FLIPH,a14 move *a13(OBJ_CONTROL),a0 andi M_FLIPH,a0 cmp a0,a14 jrz #no ;At head! Do hair pickup. FACE24 dnk,hair_pickup_anim calla change_anim1 WRSND W_DOINK,LBOWDROP_T1,LBOWDROP_T2 rets #no FACE24 dnk,lbowdrop_anim calla change_anim1 WRSND W_DOINK,LBOWDROP_T1,LBOWDROP_T2 rets ************ #kick ;8 * * MODE DX DZ ACTION * ---------------------------------------------------- * normal < 50 92 knee * dizzy " " * normal > normal kick * dizzy " " * * onground < 120 120 stomp * onground > normal kick * * running normal kick * bouncing normal kick * * onturnbkl normal kick * climbturnbkl normal kick * JJXM_INIT JJXM NORMAL, 50, 92,#kick_knee,#kick_kick ;0 JJXM RUNNING, #skick_bigboot ;1 JJXM INAIR, 50, 92,#kick_knee,#kick_kick ;2 JJXM ATTACHED, 50, 92,#kick_knee,#kick_kick ;3 JJXM ONGROUND, 120,120,#kick_stomp,#kick_kick ;4 JJXM BOUNCING, #skick_bigboot ;1 JJXM ONTURNBKL, #kick_kick ;6 JJXM BLOCK, 50, 92,#kick_knee,#kick_kick ;7 JJXM DIZZY, 50, 92,#kick_knee,#kick_kick ;8 JJXM DEAD, 96,112,#kick_stomp,#kick_kick ;9 JJXM OPPOVERHEAD, 50, 92,#kick_knee,#kick_kick ;10 JJXM CLIMBTURNBKL, #kick_kick ;11 JJXM WAITANIM, 50, 92,#kick_knee,#kick_kick ;12 JJXM GRAPPLE, 50, 92,#kick_knee,#kick_kick ;13 JJXM MASTER, 50, 92,#kick_knee,#kick_kick ;14 JJXM SLAVE, 50, 92,#kick_knee,#kick_kick ;15 JJXM HEADHOLD, 50, 92,#kick_knee,#kick_kick ;16 JJXM HEADHELD, 50, 92,#kick_knee,#kick_kick ;19 JJXM PUPPET, 50, 92,#kick_knee,#kick_kick ;20 JJXM INAIR2, 50, 92,#kick_knee,#kick_kick ;21 JJXM_END ;***** ;#kick_flyingkick ; ; movi dnk_flying_kick_anim,a0 ; calla change_anim1a ; ; SETMODE INAIR ; ; WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 ; ; rets ***** #kick_kick std_kick FACE24 dnk,kick_anim calla change_anim1a WRSND W_DOINK,KICK_T1,KICK_T2 rets ***** #kick_knee FACE24 dnk,knee_anim calla change_anim1a WRSND W_DOINK,KICK_T1,KICK_T2 rets ***** #kick_stomp FACE24 dnk,stomp_anim calla change_anim1a WRSND W_DOINK,KICK_T1,KICK_T2 rets ************ punchkick ;9 movi start_run_anim,a0 calla change_anim1a rets ************ #super_kick ;16 * * MODE DX DZ ACTION * ---------------------------------------------------- * normal < 60 60 close in super move * dizzy " " * normal > jumping kick move * dizzy " " * * onground < 144 160 super stomp * onground > normal kick * * running big boot * bouncing big boot * * onturnbkl < 60 96 jumping kick move * climbturnbkl " " * onturnbkl > normal kick * climbturnbkl " " * JJXM_INIT JJXM NORMAL, 60, 60,#skick_special,#skick_kick ;0 JJXM RUNNING, #skick_bigboot ;1 JJXM INAIR, 60, 60,#skick_special,#skick_kick ;2 JJXM ATTACHED, 60, 60,#skick_special,#skick_kick ;3 JJXM ONGROUND, 144,160,#skick_stomp,std_kick ;4 JJXM BOUNCING, #skick_bigboot ;5 JJXM ONTURNBKL, 60, 96,#skick_kick,std_kick ;6 JJXM BLOCK, 60, 60,#skick_special,#skick_kick ;7 JJXM DIZZY, 60, 60,#skick_special,#skick_kick ;8 JJXM DEAD, 144,160,#skick_stomp,std_kick ;9 JJXM OPPOVERHEAD, 60, 60,#skick_special,#skick_kick ;10 JJXM CLIMBTURNBKL, 60, 96,#skick_kick,std_kick ;11 JJXM WAITANIM, 60, 62,#skick_special,#skick_kick ;12 JJXM GRAPPLE, 60, 62,#skick_special,#skick_kick ;13 JJXM MASTER, 60, 62,#skick_special,#skick_kick ;14 JJXM SLAVE, 60, 62,#skick_special,#skick_kick ;15 JJXM HEADHOLD, 60, 62,#skick_special,#skick_kick ;16 JJXM HEADHELD, std_kick JJXM PUPPET, 60, 62,#skick_special,#skick_kick ;20 JJXM INAIR2, 60, 60,#skick_special,#skick_kick ;21 JJXM_END ***** #skick_kick FACE24 dnk,spin_kick_anim calla change_anim1a WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 rets ***** #skick_special ;If stick is toward opponent, then do quick punches move *a13(STICK_VAL_CUR),a0 move *a13(NEW_FACING_DIR),a1 andi 0ch,a1 cmp a0,a1 jrz #cont2 FACE24 dnk,knee_anim calla change_anim1 ;- correct sounds? WRSND W_DOINK,GRABHOLD_T1,GRABHOLD_T2 rets #cont2 .ref dnk_4_knee_fall_anim movi dnk_4_knee_fall_anim,a0 calla change_anim1 WRSND W_DOINK,GRABHOLD_T1,GRABHOLD_T2 rets ***** #skick_stomp FACE24 dnk,stomp_anim calla change_anim1a WRSND W_DOINK,KICK_T1,KICK_T2 rets ***** #skick_bigboot ;we can probably get away with just a #4 big boot FACE24 dnk,bigboot_anim calla change_anim1a WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 rets ************ #graboh ;8 rets #***************************************************************************** * * RUNNING (if GETUP_TIME > 0 then player is out of control) * #XRUN_VAL equ 64000h ;50000h #XRUN2_VAL equ 88000h #ZDRIFT_VAL equ 28000h ;20000h mode_running move *a13(RUN_TIME),a0 ;Used for flying kick addk 1,a0 move a0,*a13(RUN_TIME) move *a13(USR_VAR1),a0 jrnz #no_vel calla bounce_off_ropes movi #XRUN_VAL,a0 move *a13(WALK_FAST),a14 jrz #no movi #XRUN2_VAL,a0 #no move *a13(MOVE_DIR),a14 btst PLAYER_RIGHT_BIT,a14 jrnz #pos neg a0 #pos move a0,*a13(OBJ_XVEL),L #no_vel move *a13(GETUP_TIME),a0 ;delay b4 gaining control jrnz #out_of_control move *a13(ANIMODE),a0 btst MODE_UNINT_BIT,a0 jrnz #no_interrupt move *a13(STICK_VAL_CUR),a0 move *a13(MOVE_DIR),a1 or a0,a1 andi MOVE_LEFT|MOVE_RIGHT,a1 cmpi MOVE_LEFT|MOVE_RIGHT,a1 jrne #continue_run ;braking with stick. abort run. SETMODE NORMAL #continue_run #no_interrupt move *a13(STICK_VAL_CUR),a0 clr a1 movi -#ZDRIFT_VAL,a1 btst PLAYER_UP_BIT,a0 jrnz #setvel movi #ZDRIFT_VAL,a1 btst PLAYER_DOWN_BIT,a0 jrnz #setvel clr a1 #setvel move a1,*a13(OBJ_ZVEL),L ;Delay reading buttons after just getting out of an out of control run ;so a mistaken move isn't fired off move *a13(DELAY_BUTNS),a0 jrnz #out_of_control move *a13(BUT_VAL_DOWN),a0 andi 011111b,a0 X32 a0 addi #action_table,a0 move *a0,a0,L call a0 #out_of_control rets #action_table .long #z ;0 .long #punch ;1 .long #block ;2 .long #z ;3 .long #super_punch ;4 .long #super_punch,#z,#z ;5-7 .long #kick ;8 .long punchkick,#z,#z,#kick,#z,#z,#z ;9-15 .long #super_kick ;16 .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 ; .long #z ;0 ; .long #punch ;1 ; .long #block ;2 ; .long #z ;3 ; .long #super_punch ;4 ; .long #z,#z,#z ;5-7 ; .long #kick ;8 ; .long #z,#z,#z,#z,#z,#z,#z ;9-15 ; .long #super_kick ;16 ; .long #z,#z,#z,#z,#z,#z,#z ;17-23 ; .long #z,#z,#z,#z,#z,#z,#z,#z ;24-31 ************ #z rets ************ #punch ;1 #super_punch ;4 * * MODE DX DZ ACTION * ---------------------------------------------------- * normal flying clothesline * dizzy " * * onground < 176 176 belly flop * onground > nothing * * running flying clothesline * bouncing flying clothesline * * onturnbkl flying clothesline * climbturnbkl flying clothesline * JJXM_INIT JJXM NORMAL, #punch_clothesline ;0 JJXM RUNNING, #punch_clothesline ;1 JJXM INAIR, #punch_clothesline ;2 JJXM ATTACHED, #punch_clothesline ;3 JJXM ONGROUND, 176,176,#punch_bellyflop,#punch_lbowdrop ;4 JJXM BOUNCING, #punch_clothesline ;5 JJXM ONTURNBKL, #punch_clothesline ;6 JJXM BLOCK, #punch_clothesline ;7 JJXM DIZZY, #punch_clothesline ;8 JJXM DEAD, 176,176,#punch_bellyflop,#punch_lbowdrop ;9 JJXM OPPOVERHEAD, #punch_clothesline ;10 JJXM CLIMBTURNBKL, #punch_clothesline ;11 JJXM WAITANIM, #punch_clothesline ;12 JJXM GRAPPLE, #punch_clothesline ;13 JJXM MASTER, #punch_clothesline ;14 JJXM SLAVE, #punch_clothesline ;15 JJXM HEADHOLD, #punch_clothesline ;16 JJXM HEADHELD, #punch_clothesline ;19 JJXM PUPPET, #punch_clothesline ;20 JJXM INAIR2, #punch_clothesline ;21 JJXM_END ***** #punch_clothesline ;Only allow clothesline if near center of ring, and running toward opponent move *a13(MOVE_DIR),a1 btst MOVE_LEFT_BIT,a1 jrnz #lft ;Moving right move *a13(OBJ_XPOSINT),a0 cmpi RING_X_MID+70h,a0 jrlt #ok ; LOCKUP rets #lft ;Moving left move *a13(OBJ_XPOSINT),a0 cmpi RING_X_MID-70h,a0 jrgt #ok ; LOCKUP rets #ok move *a13(MOVE_DIR),a1 move *a13(NEW_FACING_DIR),a0 ;Current facing dir (9,10,6,5 only) sll 5,a0 addi #mv_tbl,a0 move *a0,a0,L btst a0,a1 jrz #yes ; LOCKUP rets #yes ;Will lunge toward opponent ;Is facing opponent - nt running away from him! movi dnk_fly_cline_anim,a0 calla change_anim1a SETMODE INAIR clr a0 move a0,*a13(RUN_TIME) WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 rets #mv_tbl .long 0,0,0,0,0,MOVE_RIGHT_BIT,MOVE_RIGHT_BIT .long 0,0,MOVE_LEFT_BIT,MOVE_LEFT_BIT ***** #punch_lbowdrop #punch_bellyflop movi dnk_belly_anim,a0 calla change_anim1a SETMODE INAIR clr a0 move a0,*a13(RUN_TIME) WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 rets ***** ;#punch_lbowdrop ; ; FACE24 dnk,lbowdrop_anim ; calla change_anim1a ; ; WRSND W_DOINK,LBOWDROP_T1,LBOWDROP_T2 ; ; rets ************ #block ;2 move *a13(OBJ_XVEL),a0,L sra 1,a0 move a0,*a13(OBJ_XVEL),L SETMODE NORMAL jruc std_block ************ #graboh #kick ;8 #super_kick ;16 * * MODE DX DZ ACTION * ---------------------------------------------------- * normal flying kick * dizzy " * * onground < 176 176 running stomp * onground > nothing * * running flying kick * bouncing flying kick * * onturnbkl flying kick * climbturnbkl flying kick * JJXM_INIT JJXM NORMAL, #kick_flyingkick ;0 JJXM RUNNING, #kick_flyingkick ;1 JJXM INAIR, #kick_flyingkick ;2 JJXM ATTACHED, #kick_flyingkick ;3 JJXM ONGROUND, 176,176,#kick_runstomp,#kick_runstomp ;4 JJXM BOUNCING, #kick_flyingkick ;5 JJXM ONTURNBKL, #kick_flyingkick ;6 JJXM BLOCK, #kick_flyingkick ;7 JJXM DIZZY, #kick_flyingkick ;8 JJXM DEAD, 176,176,#kick_runstomp,#kick_runstomp ;9 JJXM OPPOVERHEAD, #kick_flyingkick ;10 JJXM CLIMBTURNBKL, #kick_flyingkick ;11 JJXM WAITANIM, #kick_flyingkick ;12 JJXM GRAPPLE, #kick_flyingkick ;13 JJXM MASTER, #kick_flyingkick ;14 JJXM SLAVE, #kick_flyingkick ;15 JJXM HEADHOLD, #kick_flyingkick ;16 JJXM HEADHELD, #kick_flyingkick ;19 JJXM PUPPET, #kick_flyingkick ;20 JJXM INAIR2, #kick_flyingkick ;21 JJXM_END ***** #kick_flyingkick calla ck_ignore jrc #z movi dnk_flying_kick_anim,a0 calla change_anim1a SETMODE INAIR WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 rets ***** #kick_runstomp movi dnk_belly_anim,a0 calla change_anim1a SETMODE INAIR clr a0 move a0,*a13(RUN_TIME) WRSND W_DOINK,FLYKICK_T1,FLYKICK_T2 rets #***************************************************************************** * mode_inair ;2 rets #***************************************************************************** * mode_attached ;3 calla keep_attached jrnz #still_attached clr a0 move a0,*a13(ATTACH_PROC),L SETMODE NORMAL movi MODE_NORMAL,a0 move a0,*a13(ANIMODE) #still_attached rets #***************************************************************************** mode_onground ;4 rets #***************************************************************************** * * bouncing off ropes while running mode_bouncing ;5 clr a0 move a0,*a13(OBJ_XVEL),L move a0,*a13(OBJ_ZVEL),L move *a13(ANIMODE),a0 btst MODE_END_BIT,a0 jrz #not_ended move *a13(MOVE_DIR),a0 xori MOVE_LEFT+MOVE_RIGHT,a0 ;flip LEFT/RIGHT move a0,*a13(MOVE_DIR) move *a13(NEW_FACING_DIR),a1 andi MOVE_UP+MOVE_DOWN,a1 or a0,a1 ;LEFT or RIGHT move a1,*a13(FACING_DIR) ;face same dir as run movi dnk_run2_anim,a0 calla change_anim1a SETMODE RUNNING ; clr a0 ; move a0,*a13(GETUP_TIME) ;in control #not_ended rets #***************************************************************************** * * STANDING ON TOP OF TURNBUCKLE mode_onturnbkl ;6 move *a13(STICK_VAL_CUR),a0 btst PLAYER_DOWN_BIT,a0 jrz #no_climbdown ;this is so an attack isn't turned into a climbdown ; in those 5-10 ticks before MODE_INAIR2 is set... move *a13(ANIBASE),a14,L cmpi dnk_climb_up_anim,a14 jrne #no_climbdown movi dnk_climb_down_anim,a0 calla change_anim1a SETMODE CLIMBTURNBKL #no_interrupt rets #no_climbdown move *a13(BUT_VAL_DOWN),a0 andi 011111b,a0 jrz #z X32 a0 addi #action_table,a0 move *a0,a0,L call a0 MOVE *A13(PLYRNUM),A5 movi JUMP_ROPES,a2 MOVI 1000,A0 calla ADD_IF_SILENT movi IDIOT_COUNT,a2 move a2,*a13(JUMPIN_COUNT) rets ;For standing on top of turnbuckles #action_table .long #z ;0 .long #punch ;1 .long #block ;2 .long #z ;3 .long #super_punch ;4 .long #super_punch,#z,#z ;5-7 .long #kick ;8 .long #punchkick,#z,#z,#kick,#z,#z,#z ;9-15 .long #super_kick ;16 .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 ************ #z rets ************ #punch ;1 #punchkick ;1 #block ;2 movi dnk_4_blbowdrop_anim,a0 ;Buckle calla change_anim1a rets ************ ; movi dnk_4_bjump_anim,a0 ;Buckle ; calla change_anim1a ; rets ************ #super_punch ;4 ;If stick is toward opponent, then do hammer pound move ; move *a13(STICK_VAL_CUR),a0 ; move *a13(NEW_FACING_DIR),a1 ; andi 0ch,a1 ; cmp a0,a1 ; xor a0,a1 ; andi MOVE_LEFT|MOVE_RIGHT,a1 ; cmpi MOVE_LEFT|MOVE_RIGHT,a1 ; jrnz #graboh ;Br=regular ; ;;Do hammer pound ; movi dnk_4_bhammer_anim,a0 ; calla change_anim1a ; rets ; ; #graboh ;1 movi dnk_diveofftb_anim,a0 calla change_anim1a rets ************ #kick ;8 #super_kick ;16 movi dnk_4_bstomp_anim,a0 ;Buckle calla change_anim1a rets #***************************************************************************** * blocking mode_block ;7 move *a13(BUT_VAL_DOWN),a0 andi 011111b,a0 jrz #no_interrupt ;press. if block isn't down, let mode_normal handle it move a0,a2 ;save a0 from ...val_down move *a13(BUT_VAL_CUR),a0 btst PLAYER_BLOCK_BIT,a0 jrz #set_mode_normal move a2,a0 ;restore a0 from ...val_down X32 a0 addi #action_table,a0 move *a0,a0,L call a0 #no_interrupt rets #set_mode_normal SETMODE NORMAL jruc mode_normal #action_table .long #z,#punchblock,#z ;0-2 .long #punchblock ;3 .long #z,#z,#z,#z,#z,#z,#z ;4-10 .long #z,#z,#z,#z,#z,#z,#z ;11-17 .long #z,#z,#z,#z,#z,#z,#z ;18-24 .long #z,#z,#z,#z,#z,#z,#z ;25-31 ************ #z rets ************ #punchblock ;3 * * MODE DX DZ ACTION * ---------------------------------------------------- * all push * ;This push has no collisions set! SETMODE NORMAL FACE24 dnk,push_anim calla change_anim1a WRSND W_DOINK,PUSH_T1,PUSH_T2 rets #***************************************************************************** * mode_dizzy ;8 move *a13(GETUP_TIME),a0 jrnz #still_going calla clear_damage_log clr a0 move a0,*a13(STARS_FLAG) SETMODE NORMAL #still_going rets #***************************************************************************** mode_dead ;9 rets #***************************************************************************** * opponent held overhead mode_oppoverhead ;10 rets #***************************************************************************** * * CLIMBING UP OR DOWN THE TURNBUCKLE mode_climbturnbkl ;11 rets #***************************************************************************** mode_waitanim ;12 move *a13(ANIMODE),a0 btst MODE_END_BIT,a0 jrz #not_ended move *a13(CODE_ADDR),a0,L call a0 #not_ended rets #***************************************************************************** mode_grapple ;13 rets #***************************************************************************** mode_master ;14 .ref master_keep_attached calla master_keep_attached ;keep slave attached to me rets #***************************************************************************** mode_slave ;15 rets #***************************************************************************** mode_headhold ;16 move *a13(ATTACH_PROC),a10,L jrz #exit move *a13(ANIMODE),a0 btst MODE_UNINT_BIT,a0 jrnz #no_interrupt move *a13(BUT_VAL_DOWN),a0 andi 011111b,a0 X32 a0 addi #action_table,a0 move *a0,a0,L call a0 #no_interrupt rets #exit movk MOVE_DOWN_RIGHT,a1 move *a13(OBJ_CONTROL),a0 btst B_FLIPH,a0 jrz #right movk MOVE_DOWN_LEFT,a1 #right move a1,*a13(FACING_DIR) move a1,*a13(NEW_FACING_DIR) SETMODE NORMAL rets #action_table .long #z ;0 .long #punch ;1 .long #block ;2 .long #z ;3 .long #super_punch ;4 .long #super_punch,#z,#z ;5-7 .long #kick ;8 .long #punchkick,#z,#z,#kick,#z,#z,#z ;9-15 .long #super_kick ;16 .long #z,#z,#z,#graboh,#z,#z,#z ;17-23 .long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31 ************ #block #z ;0 rets ************ #punch ;1 CALLA FIND_AND_KILL_ENDLESS ;If stick is toward opponent, then do quick punches move *a13(STICK_VAL_CUR),a0 move *a13(NEW_FACING_DIR),a1 andi 0ch,a1 cmp a0,a1 jrnz #tag movi dnk_uppercuts_to_head_anim,a0 calla change_anim1a rets #tag movi dnk_uppercut_to_head_anim,a0 calla change_anim1a rets ************ #super_punch ;4 do_pile ;This flag is only set if doink has done repeated uppercuts! move *a13(USR_VAR2),a0 jrz #z CALLA FIND_AND_KILL_ENDLESS move *a13(STICK_VAL_CUR),a0 btst PLAYER_DOWN_BIT,a0 jrz #punch movi dnk_3_pile_driver_anim,a0 calla change_anim1a rets #punchkick #graboh #kick CALLA FIND_AND_KILL_ENDLESS movi dnk_3_knee_to_head_anim,a0 calla change_anim1a rets #super_kick ;16 ;If stick is toward opponent, then do quick knees move *a13(STICK_VAL_CUR),a0 move *a13(NEW_FACING_DIR),a1 andi 0ch,a1 cmp a0,a1 jrnz #z ;Quick knees CALLA FIND_AND_KILL_ENDLESS movi dnk_3_knees_to_head_anim,a0 calla change_anim1a rets #***************************************************************************** mode_headheld ;19 ;He may have let me go by hitting his block butn! move *a13(ATTACH_PROC),a0,L jrnz #no_luck ;Make sure this guy is on ground move *a13(OBJ_YPOSINT),a0 move *a13(GROUND_Y),a1 cmp a1,a0 ;a0-a1 jrgt #no_luck ;hit_gnd .ref dnk_3_head_held_stand_anim movi dnk_3_head_held_stand_anim,a0 calla change_anim1a #no_luck rets #***************************************************************************** mode_puppet ;20 rets #***************************************************************************** mode_chokehold ;24 rets #***************************************************************************** * SUBR mode_inair2 ;21 ;Read joystick for floating off from turnbuckle moves ;Perhaps each wrestler will have a different drift value #ZDRIFT2_VAL equ 58000h #XDRIFT_VAL equ 30000h move *a13(STICK_VAL_CUR),a0 clr a1 movi -#ZDRIFT2_VAL,a1 btst PLAYER_UP_BIT,a0 jrnz #setvel movi #ZDRIFT2_VAL,a1 btst PLAYER_DOWN_BIT,a0 jrnz #setvel clr a1 #setvel ; move *a13(OBJ_ZVEL),a14,L ; add a1,a14 ; move a14,*a13(OBJ_ZVEL),L move *a13(OBJ_ZPOS),a14,L add a1,a14 move a14,*a13(OBJ_ZPOS),L clr a1 movi -#XDRIFT_VAL,a1 btst PLAYER_LEFT_BIT,a0 jrnz #setvel2 movi #XDRIFT_VAL,a1 btst PLAYER_RIGHT_BIT,a0 jrnz #setvel2 clr a1 #setvel2 ; move *a13(OBJ_XVEL),a14,L ; add a1,a14 ; move a14,*a13(OBJ_XVEL),L move *a13(OBJ_XPOS),a14,L add a1,a14 move a14,*a13(OBJ_XPOS),L rets #***************************************************************************** #VEL equ 30000h ;38000h ;30000h #DVEL equ 21f0eh ;27978h ;21f0eh SUBR dnk_velocity_table ; X, Z .long 0, -#VEL ;0 UP .long #DVEL, -#DVEL ;1 UP-RIGHT .long #VEL, 0 ;2 RIGHT .long #DVEL, #DVEL ;3 DOWN-RIGHT .long 0, #VEL ;4 DOWN .long -#DVEL, #DVEL ;5 DOWN-LEFT .long -#VEL, 0 ;6 LEFT .long -#DVEL, -#DVEL ;7 UP-LEFT #***************************************************************************** SUBR dnk_rotate_anims_table ; old = up right .long dnk_stand2_anim ;new = up right .long dnk_2_to_4_turn_anim ; = down right .long dnk_2_to_6_turn_anim ; = down left *** .long dnk_2_to_8_turn_anim ; = up left ; old = down right .long dnk_4_to_2_turn_anim ;new = up right .long dnk_stand4_anim ; = down right .long dnk_4_to_6_turn_anim ; = down left .long dnk_4_to_8_turn_anim ; = up left *** ; old = down left .long dnk_6_to_2_turn_anim ;new = up right *** .long dnk_6_to_4_turn_anim ; = down right .long dnk_stand6_anim ; = down left .long dnk_6_to_8_turn_anim ; = up left ; old = up left .long dnk_8_to_2_turn_anim ;new = up right .long dnk_8_to_4_turn_anim ; = down right *** .long dnk_8_to_6_turn_anim ; = down left .long dnk_stand8_anim ; = up left SUBR dnk_leg_anims_table ; MOVE ;(#1 - UP) FACING .long dnk_walk1_f2_anim ;1 (UP) .long dnk_walk1_f2_anim ;2 (UP_RIGHT) .long dnk_walk1_f4_anim ;3 (RIGHT) .long dnk_walk1_f4_anim ;4 (DOWN_RIGHT) .long dnk_walk1_f4_anim ;5 (DOWN) .long dnk_walk1_f4_anim ;6 (DOWN_LEFT) .long dnk_walk1_f2_anim ;7 (LEFT) .long dnk_walk1_f2_anim ;8 (UP-LEFT) ;(#2 - UP-RIGHT) .long dnk_walk2_f2_anim ;1 (UP) .long dnk_walk2_f2_anim ;2 (UP_RIGHT) .long dnk_walk2_f2_anim ;3 (RIGHT) .long dnk_walk2_f4_anim ;4 (DOWN_RIGHT) .long dnk_walk8_f4_anim ;5 (DOWN) .long dnk_walk8_f4_anim ;6 (DOWN_LEFT) .long dnk_walk4_f2_anim ;7 (LEFT) .long dnk_walk4_f2_anim ;8 (UP-LEFT) ;(#3 - RIGHT) .long dnk_walk2_f2_anim ;1 (UP) .long dnk_walk2_f2_anim ;2 (UP_RIGHT) .long dnk_walk2_f2_anim ;3 (RIGHT) .long dnk_walk4_f4_anim ;4 (DOWN_RIGHT) .long dnk_walk4_f4_anim ;5 (DOWN) .long dnk_walk8_f4_anim ;6 (DOWN_LEFT) .long dnk_walk6_f2_anim ;7 (LEFT) .long dnk_walk6_f2_anim ;8 (UP-LEFT) ;(#4 - DOWN-RIGHT) .long dnk_walk2_f2_anim ;1 (UP) .long dnk_walk8_f2_anim ;2 (UP_RIGHT) .long dnk_walk4_f4_anim ;3 (RIGHT) .long dnk_walk4_f4_anim ;4 (DOWN_RIGHT) .long dnk_walk2_f4_anim ;5 (DOWN) .long dnk_walk6_f4_anim ;6 (DOWN_LEFT) .long dnk_walk2_f2_anim ;7 (LEFT) .long dnk_walk6_f2_anim ;8 (UP-LEFT) ;(#5 - DOWN) .long dnk_walk5_f2_anim ;1 (UP) .long dnk_walk5_f2_anim ;2 (UP_RIGHT) .long dnk_walk5_f4_anim ;3 (RIGHT) .long dnk_walk5_f4_anim ;4 (DOWN_RIGHT) .long dnk_walk5_f4_anim ;5 (DOWN) .long dnk_walk5_f4_anim ;6 (DOWN_LEFT) .long dnk_walk5_f2_anim ;7 (LEFT) .long dnk_walk5_f2_anim ;8 (UP-LEFT) ;(#6 - DOWN-LEFT) .long dnk_walk2_f2_anim ;1 (UP) .long dnk_walk6_f2_anim ;2 (UP_RIGHT) .long dnk_walk2_f2_anim ;3 (RIGHT) .long dnk_walk6_f4_anim ;4 (DOWN_RIGHT) .long dnk_walk2_f4_anim ;5 (DOWN) .long dnk_walk4_f4_anim ;6 (DOWN_LEFT) .long dnk_walk2_f2_anim ;7 (LEFT) .long dnk_walk8_f2_anim ;8 (UP-LEFT) ;(#7 - LEFT) .long dnk_walk2_f2_anim ;1 (UP) .long dnk_walk6_f2_anim ;2 (UP_RIGHT) .long dnk_walk6_f2_anim ;3 (RIGHT) .long dnk_walk8_f4_anim ;4 (DOWN_RIGHT) .long dnk_walk4_f4_anim ;5 (DOWN) .long dnk_walk4_f4_anim ;6 (DOWN_LEFT) .long dnk_walk2_f2_anim ;7 (LEFT) .long dnk_walk2_f2_anim ;8 (UP-LEFT) ;(#8 - UP-LEFT) .long dnk_walk2_f2_anim ;1 (UP) .long dnk_walk4_f2_anim ;2 (UP_RIGHT) .long dnk_walk6_f2_anim ;3 (RIGHT) .long dnk_walk8_f4_anim ;4 (DOWN_RIGHT) .long dnk_walk6_f4_anim ;5 (DOWN) .long dnk_walk2_f4_anim ;6 (DOWN_LEFT) .long dnk_walk2_f2_anim ;7 (LEFT) .long dnk_walk2_f2_anim ;8 (UP-LEFT) SUBR dnk_torso_anims_table ; old = up right .long dnk_torso2_anim ;new = up right .long dnk_2_to_4_turn2_anim ; = down right .long dnk_2_to_6_turn2_anim ; = down left *** .long dnk_2_to_8_turn2_anim ; = up left ; old = down right .long dnk_4_to_2_turn2_anim ;new = up right .long dnk_torso4_anim ; = down right .long dnk_4_to_6_turn2_anim ; = down left .long dnk_4_to_8_turn2_anim ; = up left *** ; old = down left .long dnk_6_to_2_turn2_anim ;new = up right *** .long dnk_6_to_4_turn2_anim ; = down right .long dnk_torso6_anim ; = down left .long dnk_6_to_8_turn2_anim ; = up left ; old = up left .long dnk_8_to_2_turn2_anim ;new = up right .long dnk_8_to_4_turn2_anim ; = down right *** .long dnk_8_to_6_turn2_anim ; = down left .long dnk_torso8_anim ; = up left ; STRUCTPD ; WORD #CHARGE_TIME ;UDW ; WORD #TIMEOUT ;UDW ; ; ; SUBRP dnk_hammer_mv ; ;;in: ;;a8 = wrestler process address ; ;;Hammer pound opponent ;;Charge away for 30 ticks ;;Toward & Super punch ; ;#start_over ; ;charge on stick away ; clr a14 ; move a14,*a13(#CHARGE_TIME),W ;#loop1 ; SLEEPK 1 ; ;;Disallow these type of moves if out of control ; move *a8(GETUP_TIME),a0 ; jrnz #loop1 ; ; move *a13(#CHARGE_TIME),a14,W ; inc a14 ; move a14,*a13(#CHARGE_TIME),W ; ; move *a8(STICK_VAL_CUR),a0 ; ; ;arbitrarily define TOWARD to be RIGHT. So if the opponent is to ; ; our left, flip the L|R direction bits... ; ; ;...however, if the stick isn't pointed left or right, don't do ; ;anything. ; move a0,a14 ; andi MOVE_LEFT|MOVE_RIGHT,a14 ; jrz #no_flip ; ; move *a8(NEW_FACING_DIR),a14 ; btst MOVE_LEFT_BIT,a14 ; jrz #no_flip ; xori MOVE_LEFT|MOVE_RIGHT,a0 ;#no_flip ; ; ;if we're still holding away, jump back to #loop1 ; btst MOVE_LEFT_BIT,a0 ; jrnz #loop1 ; ; ;no longer holding away... ; move *a13(#CHARGE_TIME),a14 ; ;;x seconds held stick is away ; ; cmpi 15,a14 ; jrlt #start_over ; ; ;okay, they released after holding away for 2 seconds. Give them ; ;half a second to push forward + super_punch ; ;; movi TSEC/2,a14 ; movk 20,a14 ; move a14,*a13(#TIMEOUT) ;#loop2 ; SLEEPK 1 ; ; move *a8(BUT_VAL_DOWN),a0 ; jrnz #press ; ; move *a13(#TIMEOUT),a14 ; dec a14 ; jrz #start_over ; move a14,*a13(#TIMEOUT) ; jruc #loop2 ; ;#press ; ;we have a button press. Is it super punch? ; btst PLAYER_PUNCH_BIT,a0 ; jrz #start_over ;wrong button. No good. ; ; ;Check for a towards on the stick. ; move *a8(STICK_VAL_CUR),a0 ; jrz #start_over ;no stick at all. No good. ; ; move *a8(NEW_FACING_DIR),a14 ; btst MOVE_LEFT_BIT,a14 ; jrz #no_flip2 ; xori MOVE_LEFT|MOVE_RIGHT,a0 ;#no_flip2 ; btst MOVE_RIGHT_BIT,a0 ; jrz #start_over ;pooched it ; ;;success! Check for the UNINT bit, then queue it up. ; move *a8(ANIMODE),a14 ; btst MODE_UNINT_BIT,a14 ; jrnz #start_over ; ; movi dnk_4_hammer_anim,a14 ; ; move *a13(PLYRMODE),a0 ; cmpi MODE_ONTURNBKL,a0 ; jrz #start_over ; ;; move *a13(PLYRMODE),a0 ;; cmpi MODE_ONTURNBKL,a0 ;; jrnz #do ;; movi dnk_4_bhammer_anim,a14 ;;#do ; move a14,*a8(SPECIAL_MOVE_ADDR),L ; jruc #start_over ; ;; .endif ; ;#* ; ; SUBRP dnk_earslap_mv ; ; STRUCTPD ; WORD #CHARGE_TIME ;UDW ; WORD #TIMEOUT ;UDW ; ; ;;in: ;;a8 = wrestler process address ; ;;Ear slap opponent ;;Charge away for 30 ticks ;;Toward & Super punch ; ;#start_over ; ;charge on stick away ; clr a14 ; move a14,*a13(#CHARGE_TIME),W ;#loop1 ; SLEEPK 1 ; ;;Disallow these type of moves if out of control ; move *a8(GETUP_TIME),a0 ; jrnz #loop1 ; calla get_opp_plyrmode ; cmpi MODE_ONGROUND,a0 ; jrz #loop1 ; cmpi MODE_DEAD,a0 ; jrz #loop1 ; ; move *a13(#CHARGE_TIME),a14,W ; inc a14 ; move a14,*a13(#CHARGE_TIME),W ; ; move *a8(STICK_VAL_CUR),a0 ; ; ;arbitrarily define TOWARD to be RIGHT. So if the opponent is to ; ; our left, flip the L|R direction bits... ; ; ;...however, if the stick isn't pointed left or right, don't do ; ;anything. ; move a0,a14 ; andi MOVE_LEFT|MOVE_RIGHT,a14 ; jrz #no_flip ; ; move *a8(NEW_FACING_DIR),a14 ; btst MOVE_LEFT_BIT,a14 ; jrz #no_flip ; xori MOVE_LEFT|MOVE_RIGHT,a0 ;#no_flip ; ; ;if we're still holding away, jump back to #loop1 ; btst MOVE_LEFT_BIT,a0 ; jrnz #loop1 ; ; ;no longer holding away... ; move *a13(#CHARGE_TIME),a14 ; ;;x seconds held stick is away ; ; cmpi 20,a14 ; jrlt #start_over ; ; ;okay, they released after holding away for 2 seconds. Give them ; ;half a second to push forward + super_punch ; ;; movi TSEC/2,a14 ; movk 15,a14 ; move a14,*a13(#TIMEOUT) ;#loop2 ; SLEEPK 1 ; ; move *a8(BUT_VAL_DOWN),a0 ; jrnz #press ; ; move *a13(#TIMEOUT),a14 ; dec a14 ; jrz #start_over ; move a14,*a13(#TIMEOUT) ; jruc #loop2 ; ;#press ; ;we have a button press. Is it super punch? ; btst PLAYER_SPUNCH_BIT,a0 ;; jrz #start_over ;wrong button. No good. ; jrz #loop2 ; btst PLAYER_PUNCH_BIT,a0 ; jrz #loop2 ; ; ;Check for a towards on the stick. ; move *a8(STICK_VAL_CUR),a0 ;; jrz #start_over ;no stick at all. No good. ; jrz #loop2 ; ; move *a8(NEW_FACING_DIR),a14 ; btst MOVE_LEFT_BIT,a14 ; jrz #no_flip2 ; xori MOVE_LEFT|MOVE_RIGHT,a0 ;#no_flip2 ; btst MOVE_RIGHT_BIT,a0 ;; jrz #start_over ;pooched it ; jrz #loop2 ; ;;success! Check for the UNINT bit, then queue it up. ; move *a8(ANIMODE),a14 ; btst MODE_UNINT_BIT,a14 ; jrnz #start_over ; ; movi dnk_4_earslap_anim,a14 ; ; move *a13(PLYRMODE),a0 ; cmpi MODE_ONTURNBKL,a0 ; jrz #start_over ; ; move a14,*a8(SPECIAL_MOVE_ADDR),L ; jruc #start_over ; ****************************************************************************** .end