wwf-wrestlemania/BRET.ASM

3010 lines
60 KiB
NASM
Raw Permalink Normal View History

2021-04-06 15:21:54 -07:00
**************************************************************
*
* Software: Jamie Rivett
* Initiated: 8/24/94
*
* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC.
*
**************************************************************
.file "bret.asm"
.title "Bret Hart 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 ADD_IF_SILENT,bounce_off_ropes,change_anim1,change_anim1a
.ref change_anim2a,check_secret_moves
.ref CLIMB_ROPES,climb_turnbuckle,do_taunt,execute_walk
.ref get_opp_plyrmode,JUMP_ROPES,PCNT,mode_dead,get_opp_process
.ref keep_attached,master_keep_attached,mode_choking
.ref mode_inair2,process_ptrs,ck_ignore,mode_puppet
.ref DO_REVERSAL,DO_REVERSAL_MESS,can_pin
.ref FIND_AND_KILL_ENDLESS,ck_teammate_pin,raisearm_check
.ref CHECK_COMBO_GO,drone_change_back,set_raisearm_bit
.ref hrt_combo_punch_anim,hrt_combo_kick_anim
.ref BLOCK_WOOSH,get_powerp_dtime,round_award
.ref blocking_off,std_taunt,std_walk_fast
.ref hyper_speed_on
.ref in_finish_move
.ref p1rounds,p2rounds
.if NUM_BRET_FINISHES
.ref hrt_finish1_move
.if NUM_BRET_FINISHES > 1
.ref hrt_finish2_move
.endif
.endif
******************************************************************************
* ANIMATION SEQUENCES
.ref hrt_3_face_driver2_anim
.ref wres_slave_anim,hrt_zip_anim,start_run_anim
.ref hrt_4_block_anim
.ref hrt_stand2_anim,hrt_stand8_anim
.ref hrt_stand4_anim,hrt_stand6_anim
.ref hrt_torso2_anim,hrt_torso8_anim
.ref hrt_torso4_anim,hrt_torso6_anim
.ref hrt_2_to_4_turn_anim,hrt_8_to_6_turn_anim ;stand
.ref hrt_4_to_2_turn_anim,hrt_6_to_8_turn_anim
.ref hrt_4_to_6_turn_anim,hrt_6_to_4_turn_anim
.ref hrt_2_to_8_turn_anim,hrt_8_to_2_turn_anim
.ref hrt_4_to_8_turn_anim,hrt_6_to_2_turn_anim
.ref hrt_2_to_6_turn_anim,hrt_8_to_4_turn_anim
.ref hrt_2_to_4_turn2_anim,hrt_8_to_6_turn2_anim ;torso
.ref hrt_4_to_2_turn2_anim,hrt_6_to_8_turn2_anim
.ref hrt_4_to_6_turn2_anim,hrt_6_to_4_turn2_anim
.ref hrt_2_to_8_turn2_anim,hrt_8_to_2_turn2_anim
.ref hrt_4_to_8_turn2_anim,hrt_6_to_2_turn2_anim
.ref hrt_2_to_6_turn2_anim,hrt_8_to_4_turn2_anim
.ref hrt_walk1_f2_anim,hrt_walk2_f2_anim,hrt_walk4_f2_anim
.ref hrt_walk5_f2_anim,hrt_walk6_f2_anim,hrt_walk8_f2_anim
.ref hrt_walk1_f4_anim,hrt_walk2_f4_anim,hrt_walk4_f4_anim
.ref hrt_walk5_f4_anim,hrt_walk6_f4_anim,hrt_walk8_f4_anim
.ref hrt_run2_anim,hrt_flying_kick_anim
.ref hrt_2_punch_anim,hrt_4_punch_anim
.ref hrt_2_kick_anim,hrt_4_kick_anim
.ref hrt_hitonground_anim,hrt_hitonground_facedown_anim
.ref hrt_2_butt_anim,hrt_4_butt_anim
.ref hrt_2_knee_anim,hrt_4_knee_anim
; .ref hrt_2_bigboot_anim,hrt_4_bigboot_anim
.ref hrt_2_stomp_anim,hrt_4_stomp_anim
.ref hrt_4_jump_kick_anim
.ref hrt_4_push_anim
.ref hrt_4_grabfling_anim,hrt_hiptoss_anim,hrt_hiptoss2_anim
.ref hrt_2_grabfling_anim
.ref hrt_faceup_getup_anim,hrt_facedown_getup_anim
.ref hrt_heldoh_anim
.ref hrt_pogo_anim
.ref hrt_2_ground_punch_anim,hrt_4_ground_punch_anim
.ref hrt_running_ground_punch_anim
.ref hrt_climb_down_anim,hrt_tbukl_leap_anim
.ref hrt_climb_up_anim,hrt_hh_2_ddt_anim
.ref hrt_running_ddt_anim
.ref hrt_2_hair_pickup_anim,hrt_2_pin_anim
.ref hrt_3_head_held_stand_anim
.ref hrt_4_hair_pickup_anim
.ref hrt_3_head_hold2_anim,hrt_4_knee_fall_anim
.ref hrt_3_head_hold_anim
.ref hrt_4_pin_anim,hrt_fall_back_anim
.ref hrt_4_uppercut_anim
.ref hrt_2_raise_arm_anim,hrt_4_raise_arm_anim
.ref hrt_2_super_punch2_anim
.ref hrt_4_super_punch2_anim
.ref hrt_4_super_punch_anim
.ref hrt_2_super_kick_anim,hrt_4_super_kick_anim
.ref hrt_3_pile_driver_anim,hrt_rake_face_anim
.ref hrt_knees_to_head_anim,hrt_uppercuts_to_head_anim
.ref hrt_roll_uppercut_anim,hrt_4_knee_to_head_anim
.ref hrt_2_shooter_anim,hrt_4_shooter_anim
; .ref hrt_pkup_chair_anim
.ref hrt_2_butts_anim,hrt_4_butts_anim
.ref DAM_MULT,BONUS_MESS
******************************************************************************
* SYMBOLS DEFINED IN THIS FILE
******************************************************************************
* EQUATES FOR THIS FILE
#*****************************************************************************
bret_secret_moves
.long #charge_ddt
.long #neck_grab
.long #grab_fling
.long #hip_toss
.long #grab_fling2
.long #hip_toss2
.long #face_rake
.long #jump_kick
.long #supercut
.long 0
******************************************************************************
*
* SPECIAL MOVE PROCESSES - Secret moves
*
;a8=process of wrestler
SUBR hrt_smove_table
.long hrt_charge_flying_kick
.long hrt_charge_face_rake
.long hrt_hdhold_pile
.long hrt_hdhold_ddt
.long hrt_hdhold_faceslam
.long hrt_grab_toss_air
.long hrt_roll_uppercut
.long hrt_hdhold_combo1
.long hrt_hdhold_combo2
; .long hrt_hdhold_anti_combo
.long std_walk_fast
.long std_taunt
.if NUM_BRET_FINISHES
.long hrt_finish_move1
.endif
.if NUM_BRET_FINISHES > 1
.long hrt_finish_move2
.endif
.long 0
*******************************************************************************
#supercut
.word B_PUNCH, J_ALL
.word J_DOWN, J_REAL_LR
.word J_DOWN, J_REAL_LR
.word 8000h | 16 ;max
.long #scrt_cut
#scrt_cut
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
cmpi MODE_ATTACHED,a0
jrz #out
movi hrt_4_super_punch_anim,a0
calla change_anim1a
WRSND W_BRET,PUNCH_T1,PUNCH_T2
rets
*******************************************************************************
#jump_kick
.word B_SKICK, J_ALL
.word J_AWAY, J_REAL_LR | J_UP | J_DOWN
.word J_AWAY, J_REAL_LR | J_UP | J_DOWN
.word 8000h | 32 ;max
.long #scrt_flykick
#scrt_flykick
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
cmpi MODE_ATTACHED,a0
jrz #out
movi hrt_4_jump_kick_anim,a0
calla change_anim1a
WRSND W_BRET,FLYKICK_T1,FLYKICK_T2
rets
*******************************************************************************
#charge_ddt
move *a13(BUT_VAL_UP),a0
btst PLAYER_SPUNCH_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_powerp_dtime
cmpi 100,a0 ;> min?
jrlt #no_punch
callr #scrt_ddt
setc
rets
#no_punch
clrc
rets
#scrt_ddt
move *a13(PLYRMODE),a0
cmpi MODE_HEADHELD,a0
jrz #out
cmpi MODE_HEADHOLD,a0
jrz #out
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 #leapddt
;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
#leapddt
;missing noise for a reason !
WRSND W_BRET,FLYKICK_T1,FLYKICK_T2
movi hrt_running_ddt_anim,a0
calla change_anim1a
rets
#norm
;missing noise for a reason !
WRSND W_BRET,FLYKICK_T1,FLYKICK_T2
movi hrt_hh_2_ddt_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(LAST_HEADHOLD),a14,L
move @PCNT,a0,L
sub a14,a0
cmpi 2*60,a0
jrge #ok2
;This head grab is too close (in terms of time) to most recent grab
.ref hrt_3_fake_hold_anim
movi hrt_3_fake_hold_anim,a0
calla change_anim1a
rets
#ok2
move *a13(CLOSEST_XDIST),a1
cmpi 90,a1
jrgt #std_grab
movi hrt_3_head_hold2_anim,a0
calla change_anim1a
#out rets
#std_grab
movi hrt_3_head_hold_anim,a0
calla change_anim1a
rets
*******************************************************************************
#grab_fling2
.word B_SPUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN
.word 8000h | 10 ;max
.long #scrt_grabfling2
#hip_toss2
.word B_PUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN
.word 8000h | 10 ;max
.long #scrt_grabfling2
#scrt_grabfling2
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
jrz #yes
rets
*******************************************************************************
#grab_fling
; .word B_SPUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN
; .word 8000h | 10 ;max
; .long #scrt_grabfling
.word B_SPUNCH, J_ALL
.word J_AWAY, J_REAL_LR
.word J_AWAY, J_REAL_LR
.word 8000h | 32 ;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
movi hrt_hiptoss_anim,a0
calla change_anim1a
WRSND W_BRET,GRABFLING_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
; move *a13(LAST_FLING_ATTEMPT),a14,L
; move @PCNT,a0,L
; sub a14,a0
; cmpi 3*60,a0
; jrge #ok2a
;
; FACE24 hrt,super_punch2_anim
; calla change_anim1a
;
; WRSND W_BRET,SPUNCH_T1,SPUNCH_T2
; rets
;
;#ok2a
; move @PCNT,a14,L ;use 32-bit PCNT!
; move a14,*a13(LAST_FLING_ATTEMPT),L
FACE24 hrt,grabfling_anim
calla change_anim1a
WRSND W_BRET,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
.word B_PUNCH, J_ALL
.word J_AWAY, J_REAL_LR
.word J_AWAY, J_REAL_LR
.word 8000h | 32 ;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_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 70h,a0
jrgt #out
#doit
movi hrt_hiptoss_anim,a0
calla change_anim1a
WRSND W_BRET,HIPTOSS_T1,PUNCH_T2
rets
*******************************************************************************
#face_rake
.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 | 30 ;max
.long #scrt_facerake
#scrt_facerake
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
WRSND W_BRET,UPRCUT_T1,UPRCUT_T2
movi hrt_rake_face_anim,a0
calla change_anim1a
rets
#*******************************************************************************
; STRUCTPD
; WORD #CHARGE_TIME ;UDW
#CHARGE_TIME .equ SM_USRW1 ;
hrt_charge_flying_kick
#start_over
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(BUT_VAL_CUR),a0
btst PLAYER_SKICK_BIT,a0
jrz #p1
jruc #loop1
#p1
;no longer holding button
move *a13(#CHARGE_TIME),a14
cmpi 100,a14
jrlt #start_over
move *a8(GETUP_TIME),a0
jrnz #start_over
move *a8(PLYRMODE),a0
cmpi MODE_HEADHELD,a0
jrz #start_over
cmpi MODE_HEADHOLD,a0
jrz #start_over
cmpi MODE_ONGROUND,a0
jrz #start_over
cmpi MODE_DEAD,a0
jrz #start_over
move *a8(CLOSEST_NUM),a0
X32 a0
addi process_ptrs,a0
move *a0,a0,L
move *a0(PLYRMODE),a0
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
.ref ck_ignore_a8
calla ck_ignore_a8
jrc #start_over
movi hrt_flying_kick_anim,a14
move a14,*a8(SPECIAL_MOVE_ADDR),L
WRSND W_BRET,FLYKICK_T1,FLYKICK_T2
SETMODE INAIR
jruc #start_over
#*******************************************************************************
; STRUCTPD
; WORD #CHARGE_TIME ;UDW
#CHARGE_TIME .equ SM_USRW1 ;
hrt_charge_face_rake
#start_over
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(BUT_VAL_CUR),a0
btst PLAYER_PUNCH_BIT,a0
jrz #p1
jruc #loop1
#p1
;no longer holding button
move *a13(#CHARGE_TIME),a14
cmpi 100,a14
jrlt #start_over
move *a8(GETUP_TIME),a0
jrnz #start_over
move *a8(PLYRMODE),a0
cmpi MODE_HEADHELD,a0
jrz #start_over
cmpi MODE_HEADHOLD,a0
jrz #start_over
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 hrt_rake_face_anim,a14
move a14,*a8(SPECIAL_MOVE_ADDR),L
WRSND W_BRET,UPRCUT_T1,UPRCUT_T2
jruc #start_over
.if NUM_BRET_FINISHES
#******************************************************************************
SUBRP hrt_finish_move1
#TIMEOUT .equ TSEC
#end_wait
SLEEP TSEC/4
move @p1rounds,a0 ; Get player 1 rounds
move @p2rounds,a1 ; Get player 2 rounds
or a1,a0 ; Put em together
cmpi 2,a0 ; Anybody got 2?
jrlt #end_wait ; br = no
#reset
clr a11
move a11,@in_finish_move
SLEEPK 1
WAITSWITCH_DWN J_UP,0,#reset
movi #TIMEOUT,a11
move a11,@in_finish_move
WAITSWITCH_DWN J_DOWN,0,#reset
WAITSWITCH_DWN J_TOWARD,J_DOWN|J_UP,#reset
WAITSWITCH_DWN J_TOWARD,J_DOWN|J_UP,#reset
WAITSWITCH_DWN B_PUNCH,J_ALL,#reset
movi hrt_finish1_move,a0
move a0,*a8(SPECIAL_MOVE_ADDR),L
DIE
.endif
.if NUM_BRET_FINISHES > 1
#******************************************************************************
SUBRP hrt_finish_move2
#TIMEOUT .equ TSEC
#end_wait
SLEEP TSEC/4
move @p1rounds,a0 ; Get player 1 rounds
move @p2rounds,a1 ; Get player 2 rounds
or a1,a0 ; Put em together
cmpi 2,a0 ; Anybody got 2?
jrlt #end_wait ; br = no
#reset
clr a11
move a11,@in_finish_move
SLEEPK 1
WAITSWITCH_DWN J_UP,0,#reset
movi #TIMEOUT,a11
move a11,@in_finish_move
WAITSWITCH_DWN J_UP,0,#reset
WAITSWITCH_DWN J_RIGHT,J_UP,#reset
WAITSWITCH_DWN J_RIGHT,J_UP,#reset
WAITSWITCH_DWN B_SPUNCH,J_ALL,#reset
movi hrt_finish2_move,a0
move a0,*a8(SPECIAL_MOVE_ADDR),L
DIE
.endif
#******************************************************************************
SUBRP hrt_roll_uppercut
#TIMEOUT .equ TSEC
#reset
SLEEPK 1
clr a11
WAITSWITCH_DWN J_DOWN, 0, #reset
movi #TIMEOUT,a11
;this should make it nice and lenient...
WAITSWITCH_DWN J_TOWARD,J_UP|J_DOWN,#reset
WAITSWITCH_DWN B_SPUNCH,J_ALL, #reset
move *a8(ANIMODE),a0
btst MODE_UNINT_BIT,a0
jrnz #reset
move *a8(IMMOBILIZE_TIME),a14
jrnz #reset ;ignore
move *a8(PLYRMODE),a0
cmpi MODE_ONTURNBKL,a0
jreq #reset
cmpi MODE_HEADHOLD,a0
jreq #reset
cmpi MODE_HEADHELD,a0
jreq #reset
WRSND W_BRET,GRABFLING_T1,GRABFLING_T2
movi hrt_roll_uppercut_anim,a0
move a0,*a8(SPECIAL_MOVE_ADDR),L
clr a0
move a0,*a8(RUN_TIME)
; SETMODE NORMAL
jruc #reset
*******************************************************************************
#*
hrt_hdhold_combo1
#TIMEOUT .equ 60
#lp0
SLEEPK 1
#lp
move *a8(PLYRMODE),a0
cmpi MODE_HEADHOLD,a0
jrnz #lp0
; 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_PUNCH,J_ALL,#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)
;Target WHOIHIT
SMRTTGT a8,WHOIHIT
CALLA FIND_AND_KILL_ENDLESS
movi hrt_combo_punch_anim,a14
move a14,*a8(SPECIAL_MOVE_ADDR),L
SLEEPK 20
jruc #lp
*******************************************************************************
#*
hrt_hdhold_combo2
#TIMEOUT .equ 60
#lp0
SLEEPK 1
#lp
move *a8(PLYRMODE),a0
cmpi MODE_HEADHOLD,a0
jrnz #lp0
; 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)
;Target WHOIHIT
SMRTTGT a8,WHOIHIT
CALLA FIND_AND_KILL_ENDLESS
movi hrt_combo_kick_anim,a14
move a14,*a8(SPECIAL_MOVE_ADDR),L
SLEEPK 20
jruc #lp
#*****************************************************************************
hrt_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
WAITSWITCH_DWN J_TOWARD,0,#lp
movi #TIMEOUT,a11
WAITSWITCH_DWN J_TOWARD,0,#lp
WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp
move *a8(PLYRMODE),a0
cmpi MODE_HEADHOLD,a0
jrz #slam
cmpi MODE_HEADHELD,a0
jrnz #lp0
move *a8(I_WILL_DIE),A14
jrnz #lp0
move *a8(IMMOBILIZE_TIME),a14
jrnz #lp0 ;ignore
calla DO_REVERSAL
calla DO_REVERSAL_MESS
;target WHOHITME -- don't hit anyone else
SMRTTGT a8,WHOHITME
;immobilize WHOHITME
move *a8(WHOHITME),a0,L
jruc #is_reversal
#slam
move *a8(IMMOBILIZE_TIME),a14
jrnz #lp0 ;ignore
movi 35,A10 ;Pile driver
CREATE MESSAGE_PID,BONUS_MESS
;target WHOIHIT -- don't hit anyone else
SMRTTGT a8,WHOIHIT
;immobilize WHOIHIT
move *a8(WHOIHIT),a0,L
#is_reversal
movk 15,a14
move a14,*a0(IMMOBILIZE_TIME)
CALLA FIND_AND_KILL_ENDLESS
WRSND W_BRET,GRABFLING_T1,GRABFLING_T2
movi hrt_3_pile_driver_anim,a0
move a0,*a8(SPECIAL_MOVE_ADDR),L
SLEEPK 20
jruc #lp
#*****************************************************************************
SUBRP hrt_hdhold_ddt
#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
WAITSWITCH_DWN J_DOWN,0,#lp
movi #TIMEOUT,a11
WAITSWITCH_DWN J_DOWN,0,#lp
WAITSWITCH_DWN B_SKICK,J_ALL,#lp
move *a8(PLYRMODE),a0
cmpi MODE_HEADHOLD,a0
jrz #slam
cmpi MODE_HEADHELD,a0
jrnz #lp0
move *a8(I_WILL_DIE),A14
jrnz #lp0
move *a8(IMMOBILIZE_TIME),a14
jrnz #lp0 ;ignore
calla DO_REVERSAL
calla DO_REVERSAL_MESS
;target WHOHITME -- don't hit anyone else
SMRTTGT a8,WHOHITME
;immobilize WHOHITME
move *a8(WHOHITME),a0,L
jruc #is_reversal
#slam
move *a8(IMMOBILIZE_TIME),a14
jrnz #lp0 ;ignore
movk 16,A10 ;Pile driver
CREATE MESSAGE_PID,BONUS_MESS
;target WHOIHIT -- don't hit anyone else
SMRTTGT a8,WHOIHIT
;immobilize WHOIHIT
move *a8(WHOIHIT),a0,L
#is_reversal
movk 15,a14
move a14,*a0(IMMOBILIZE_TIME)
CALLA FIND_AND_KILL_ENDLESS
movi hrt_hh_2_ddt_anim,a0
move a0,*a8(SPECIAL_MOVE_ADDR),L
SLEEPK 20
jruc #lp
#*****************************************************************************
SUBRP hrt_hdhold_faceslam
#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,0,#lp
movi #TIMEOUT,a11
WAITSWITCH_DWN J_TOWARD,J_DOWN|J_UP,#lp
; WAITSWITCH_DWN J_DOWN_TOWARD,0,#lp
WAITSWITCH_DWN B_PUNCH,J_ALL,#lp
move *a8(PLYRMODE),a0
cmpi MODE_HEADHOLD,a0
jrz #slam
cmpi MODE_HEADHELD,a0
jrnz #lp0
move *a8(I_WILL_DIE),A14
jrnz #lp0
move *a8(IMMOBILIZE_TIME),a14
jrnz #lp0 ;ignore
calla DO_REVERSAL
calla DO_REVERSAL_MESS
;target WHOHITME -- don't hit anyone else
SMRTTGT a8,WHOHITME
;immobilize WHOHITME
move *a8(WHOHITME),a0,L
jruc #is_reversal
#slam
move *a8(IMMOBILIZE_TIME),a14
jrnz #lp0 ;ignore
movk 20,A10 ;Pile driver
CREATE MESSAGE_PID,BONUS_MESS
;target WHOIHIT -- don't hit anyone else
SMRTTGT a8,WHOIHIT
;immobilize WHOIHIT
move *a8(WHOIHIT),a0,L
#is_reversal
movk 15,a14
move a14,*a0(IMMOBILIZE_TIME)
CALLA FIND_AND_KILL_ENDLESS
movi hrt_3_face_driver2_anim,a0
move a0,*a8(SPECIAL_MOVE_ADDR),L
SLEEPK 20
jruc #lp
#*****************************************************************************
SUBRP hrt_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_ALL,#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
SWAP a8,a13
calla get_opp_plyrmode
SWAP a8,a13
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 70h,a0
jrgt #lp
movi hrt_hiptoss_anim,a0
move a0,*a8(SPECIAL_MOVE_ADDR),L
; WRSND W_BRET,GRABFLING_T1,GRABFLING_T2
WRSND W_BRET,HIPTOSS_T1,PUNCH_T2
SLEEPK 20
jruc #lp
#doit2 movi hrt_hiptoss2_anim,a0
move a0,*a8(SPECIAL_MOVE_ADDR),L
WRSND W_BRET,HIPTOSS_T1,PUNCH_T2
SLEEPK 20
jruc #lp
;#******************************************************************************
;
;;Could start this process only when opponent is in combo mode!
;
;hrt_hdhold_anti_combo
;
;#TIMEOUT .equ 30
;
;#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 B_SPUNCH,J_ALL,#lp
;
; movi #TIMEOUT,a11
;
; WAITSWITCH_DWN B_SPUNCH,J_ALL,#lp
; WAITSWITCH_DWN B_SPUNCH,J_ALL,#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
; move @PCNT,a14
; sub a0,a14
; abs a14
; cmpi 80,a14
; jrge #lp0
; move *a8(I_WILL_DIE),A14
; jrnz #lp0
;
;;Combo breaker message!
; CALLA DO_REVERSAL
; CALLA DO_REVERSAL_MESS
;
; clr a0
; move a0,*a8(IMMOBILIZE_TIME)
;
; move *a8(WHOHITME),a14,L
; movk 15,a0
; move a0,*a14(IMMOBILIZE_TIME)
;
; ;target WHOHITME
; SMRTTGT a8,WHOHITME
;
; CALLA FIND_AND_KILL_ENDLESS
;
; WRSND W_BRET,HIPTOSS_T1,PUNCH_T2
; movi hrt_3_face_driver2_anim,a14
; move a14,*a8(SPECIAL_MOVE_ADDR),L
;
; SLEEPK 20
;
; jruc #lp
#*****************************************************************************
SUBR bret_ani_init
move *a13(FACING_DIR),a0
btst PLAYER_RIGHT_BIT,a0
jrnz #p1
;Plyr 2
movi hrt_stand4_anim,a0
calla change_anim1a
movi hrt_torso4_anim,a0
calla change_anim2a
PUSH a10
move a13,a10
CREATE TAUNT_PID,do_taunt
PULL a10
rets
#p1
movi hrt_stand2_anim,a0
calla change_anim1a
movi hrt_torso2_anim,a0
calla change_anim2a
rets
#*****************************************************************************
*
* BRET HART CONTROL CODE
*
* a13 = * bret process
SUBR move_bret
movi bret_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_puppet2 ;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
.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
move *a13(IMMOBILIZE_TIME),a0
jrnz #nope
;Player has died amidst a combo...
;Knock me down.
movi hrt_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
;if closest is a zombie, skip pin section.
calla get_opp_process
move *a0(STATUS_FLAGS),a14
btst B_ZOMBIE,a14
jrnz #opp_not_dead
;all opponents are dead. Check for pins/raisearms
;if we're attached to someone, don't interrupt it.
move *a13(ATTACH_PROC),a1,L
jrz #no_attch
move *a1(ATTACH_PROC),a2,L
cmp a2,a13
jreq #no_pin_yet
#no_attch
;if a teammate has pinned, raise yer arm.
calla ck_teammate_pin
jrc #raisearm
;nobody has pinned. if we're outside or all our opponents are
; outside, do a raisearm.
calla raisearm_check
jrc #raisearm
;we're inside with a pinnable opponent. any button pins.
move *a13(BUT_VAL_CUR),a0
jrz #no_pin_yet
;we have a press -- make sure opponent is on the ground
calla can_pin
jrnc #opp_notgnd
;opponent is on the ground. pin him.
FACE24 hrt,pin_anim
calla change_anim1a
;set the 'I did a pin' flag.
move *a13(STATUS_FLAGS),a14
ori M_DID_PIN,a14
move a14,*a13(STATUS_FLAGS)
;if we're a temp drone for auto-pin purposes, turn back into
; a normal player here.
calla drone_change_back
rets
#raisearm
FACE24 hrt,raise_arm_anim
calla change_anim1a
calla set_raisearm_bit
;if we're a temp drone for auto-pin purposes, turn back into
; a normal player here.
calla drone_change_back
rets
#too_far_to_pin
#opp_notgnd
#opp_not_dead
#no_pin_yet
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
jrc #nblk
clr a0
move a0,*a13(ATTACK_TYPE)
rets
#nblk
move *a13(BUT_VAL_CUR),a0
andi 011111b,a0
cmpi PLAYER_PUNCH_VAL|PLAYER_KICK_VAL,a0
jrz #punchkick
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
.long #z,#punch,#block,#block ;0-3
.long #super_punch,#super_punch,#block,#block ;4-7
.long #kick,#punchkick,#block,#block ;8-11
.long #super_punch,#punchkick,#block,#block ;12-15
.long #super_kick,#super_kick,#block,#block ;16-19
.long #graboh,#graboh,#block,#block ;20-23
.long #super_kick,#punchkick,#block,#block ;24-27
.long #graboh,#graboh,#block,#block ;28-31
************
#z ;0
rets
************
#punch ;1
*
* MODE DX DZ ACTION
* ----------------------------------------------------
* normal < 62 92 headbutt
* dizzy " "
* normal > normal punch
* dizzy " "
*
* onground < 120 120 elbow drop
* onground > normal punch
*
* running hiptoss
* bouncing hiptoss
*
* 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, 160,140,#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, 160,140,#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 CHOKEHOLD, 50, 45,#punch_hdbutt,#punch_punch ;16
JJXM PUPPET, 50, 45,#punch_hdbutt,#punch_punch ;20
JJXM PUPPET2, 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 hrt,punch_anim
calla change_anim1a
WRSND W_BRET,PUNCH_T1,PUNCH_T2
rets
*****
#punch_hdbutt
FACE24 hrt,butt_anim
calla change_anim1a
WRSND W_BRET,HDBUTT_T1,HDBUTT_T2
rets
*****
#punch_lbowdrop
FACE24 hrt,ground_punch_anim
calla change_anim1a
WRSND W_BRET,LBOWDROP_T1,LBOWDROP_T2
rets
************
#block ;2
std_block
move @blocking_off,a0
jrnz #no_blocking
RND_AWARD a13,BLOCKS_AWD
movi hrt_4_block_anim,a0
calla change_anim1
calla BLOCK_WOOSH
clr a0
move a0,*a13(BLOCK_TIME)
clrc
rets
#no_blocking
setc
rets
************
#super_punch ;4
*
* MODE DX DZ ACTION
* ----------------------------------------------------
* normal < 50 92 close in super move
* dizzy " "
* normal > jumping punch move
* dizzy " "
*
* onground < 120 120 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, 70, 45,#spunch_special,#spunch_slap ;0
JJXM RUNNING, 70, 45,#spunch_special,#spunch_slap ;1
JJXM INAIR, 70, 45,#spunch_special,#spunch_slap ;2
JJXM ATTACHED, 70, 45,#spunch_special,#spunch_slap ;3
JJXM ONGROUND, 160,140,#spunch_lbowdrop,std_punch ;4
JJXM BOUNCING, 70, 45,#spunch_special,#spunch_slap ;1
JJXM ONTURNBKL, #spunch_slap ;6
JJXM BLOCK, 70, 45,#spunch_special,#spunch_slap ;7
JJXM DIZZY, 70, 45,#spunch_special,#spunch_slap ;8
JJXM DEAD, 160,140,#spunch_lbowdrop,std_punch ;9
JJXM OPPOVERHEAD, 70, 45,#spunch_special,#spunch_slap ;10
JJXM CLIMBTURNBKL, std_punch ;11
JJXM WAITANIM, 70, 45,#spunch_special,#spunch_slap ;12
JJXM GRAPPLE, 70, 45,#spunch_special,#spunch_slap ;13
JJXM MASTER, 70, 45,#spunch_special,#spunch_slap ;14
JJXM SLAVE, 70, 45,#spunch_special,#spunch_slap ;15
JJXM HEADHOLD, 70, 45,#spunch_special,#spunch_slap ;16
JJXM HEADHELD, #z ;do_pile ;19
JJXM CHOKEHOLD, 70, 45,#spunch_special,#spunch_slap ;16
JJXM PUPPET, 70, 45,#spunch_special,#spunch_slap ;20
JJXM PUPPET2, 70, 45,#spunch_special,#spunch_slap ;20
JJXM INAIR2, 70, 45,#spunch_special,#spunch_slap ;21
JJXM_END
*****
#spunch_special
move *a13(STICK_VAL_CUR),a0
btst MOVE_DOWN_BIT,a0
jrnz #uppercut
; move *a13(NEW_FACING_DIR),a1
; andi 0ch,a1
; cmp a0,a1
; jrz #cont
move *a13(CLOSEST_XDIST),a1
cmpi 55,a1
jrgt std_punch
; jruc #hdbutt
;#cont
; movi hrt_3_head_hold2_anim,a0
; calla change_anim1a
;
; WRSND W_BRET,GRABHOLD_T1,GRABHOLD_T2
;
; rets
;
;#hdbutt
FACE24 hrt,butts_anim
calla change_anim1
WRSND W_BRET,HDBUTT_T1,HDBUTT_T2
rets
#uppercut
movi hrt_4_uppercut_anim,a0
calla change_anim1a
WRSND W_BRET,UPRCUT_T1,UPRCUT_T2
rets
*****
#spunch_lbowdrop
;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 *a14(PLYRMODE),a2
cmpi MODE_DEAD,a2
jrz #no
move *a13(OBJ_XPOS),a1,L
move *a14(OBJ_XPOS),a2,L
sub a2,a1
abs a1
srl 16,a1
cmpi 30h,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 #feet
;At head! Do hair pickup.
FACE24 hrt,hair_pickup_anim
calla change_anim1
WRSND W_BRET,LBOWDROP_T1,LBOWDROP_T2
rets
#feet
cmpi 40h,a1 ;28
jrlt #no
FACE24 hrt,shooter_anim
calla change_anim1a
WRSND W_BRET,LBOWDROP_T1,LBOWDROP_T2
rets
#no
FACE24 hrt,ground_punch_anim
calla change_anim1
WRSND W_BRET,LBOWDROP_T1,LBOWDROP_T2
rets
*****
#spunch_slap
FACE24 hrt,super_punch2_anim
calla change_anim1a
WRSND W_BRET,PUNCH_T1,PUNCH_T2
rets
************
#kick ;8
*
* MODE DX DZ ACTION
* ----------------------------------------------------
* normal < 56 92 knee
* block " "
* dizzy " "
* normal > normal kick
* block " "
* 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, 50, 92,#kick_knee,#kick_kick ;0
JJXM INAIR, 50, 92,#kick_knee,#kick_kick ;2
JJXM ATTACHED, 50, 92,#kick_knee,#kick_kick ;3
JJXM ONGROUND, 160,140,#kick_stomp,#kick_kick ;4
JJXM BOUNCING, 50, 92,#kick_knee,#kick_kick ;0
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, 160,140,#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 CHOKEHOLD, 50, 92,#kick_knee,#kick_kick ;16
JJXM PUPPET, 50, 92,#kick_knee,#kick_kick ;20
JJXM PUPPET2, 50, 92,#kick_knee,#kick_kick ;20
JJXM INAIR2, #kick_TB ;21
JJXM_END
*****
#kick_TB
.ref hrt_kick_TB_anim
movi hrt_kick_TB_anim,a0
calla change_anim1a
WRSND W_BRET,KICK_T1,KICK_T2
rets
*****
#kick_kick
std_kick
FACE24 hrt,kick_anim
calla change_anim1a
WRSND W_BRET,KICK_T1,KICK_T2
rets
*****
#kick_knee
std_knee
FACE24 hrt,knee_anim
calla change_anim1a
WRSND W_BRET,KICK_T1,KICK_T2
rets
*****
#kick_stomp
std_stomp
FACE24 hrt,stomp_anim
calla change_anim1a
WRSND W_BRET,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 < 120 120 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, 60, 60,#skick_special,#skick_kick ;0
JJXM INAIR, 60, 60,#skick_special,#skick_kick ;2
JJXM ATTACHED, 60, 60,#skick_special,#skick_kick ;3
JJXM ONGROUND, 160,140,std_stomp,std_kick ;4
JJXM BOUNCING, 60, 60,#skick_special,#skick_kick ;0
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, 160,140,std_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 CHOKEHOLD, 60, 62,#skick_special,#skick_kick ;16
JJXM PUPPET, 60, 62,#skick_special,#skick_kick ;20
JJXM PUPPET2, 60, 62,#skick_special,#skick_kick ;20
JJXM INAIR2, #kick_TB ;21
JJXM_END
*****
#graboh
#skick_kick
FACE24 hrt,super_kick_anim
calla change_anim1a
WRSND W_BRET,FLYKICK_T1,FLYKICK_T2
rets
*****
#skick_special
move *a13(STICK_VAL_CUR),a0
move *a13(NEW_FACING_DIR),a1
andi 0ch,a1
cmp a0,a1
jrnz std_knee
movi hrt_4_knee_fall_anim,a0
calla change_anim1
WRSND W_BRET,KICK_T1,KICK_T2
rets
*****
;#skick_bigboot
;
; FACE24 hrt,bigboot_anim
; calla change_anim1a
;
; WRSND W_BRET,FLYKICK_T1,FLYKICK_T2
;
; rets
#*****************************************************************************
*
* RUNNING (if GETUP_TIME > 0 then player is out of control)
*
#XRUN_VAL equ HRT_XRUN
#XRUN2_VAL equ HRT_XRUN2
#ZDRIFT_VAL equ HRT_ZDRIFT
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 @hyper_speed_on,a14
sll a14,a0
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(ANIMODE),a0
; btst MODE_UNINT_BIT,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,#punch,#block,#block ;0-3
.long #super_punch,#super_punch,#block,#block ;4-7
.long #kick,#punchkick,#block,#block ;8-11
.long #super_punch,#punchkick,#block,#block ;12-15
.long #super_kick,#super_kick,#block,#block ;16-19
.long #graboh,#graboh,#block,#block ;20-23
.long #super_kick,#punchkick,#block,#block ;24-27
.long #graboh,#graboh,#block,#block ;28-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
#punchkick
#graboh
*
* 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, #punch_bellyflop ;4
JJXM BOUNCING, #punch_clothesline ;5
JJXM ONTURNBKL, #punch_clothesline ;6
JJXM BLOCK, #punch_clothesline ;7
JJXM DIZZY, #punch_clothesline ;8
JJXM DEAD, #punch_bellyflop ;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 CHOKEHOLD, #punch_clothesline ;16
JJXM PUPPET, #punch_clothesline ;20
JJXM PUPPET2, #punch_clothesline ;20
JJXM INAIR2, #punch_clothesline ;21
JJXM_END
*****
#punch_rets
rets
*****
#punch_clothesline
;don't do it if you're running away from your opponent.
move *a13(FACING_DIR),a0
move *a13(NEW_FACING_DIR),a1
and a0,a1
andi MOVE_LEFT|MOVE_RIGHT,a1
jrz #z
movi hrt_running_ddt_anim,a0
calla change_anim1a
WRSND W_BRET,FLYKICK_T1,FLYKICK_T2
rets
*****
#punch_bellyflop
std_bellyflop
;don't do it if you're running away from your opponent.
move *a13(FACING_DIR),a0
move *a13(NEW_FACING_DIR),a1
and a0,a1
andi MOVE_LEFT|MOVE_RIGHT,a1
jrz #z
movi hrt_running_ground_punch_anim,a0
calla change_anim1a
WRSND W_BRET,FLYKICK_T1,FLYKICK_T2
rets
************
#block ;2
move *a13(OBJ_XVEL),a0,L
sra 1,a0
move a0,*a13(OBJ_XVEL),L
SETMODE NORMAL
jruc std_block
************
#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
JJXM BLOCK, #kick_flyingkick
JJXM DIZZY, #kick_flyingkick
JJXM ONGROUND, std_bellyflop
JJXM RUNNING, #kick_flyingkick
JJXM BOUNCING, #kick_flyingkick
JJXM ONTURNBKL, #kick_flyingkick
JJXM CLIMBTURNBKL, #kick_flyingkick
JJXM INAIR, #kick_flyingkick
JJXM ATTACHED, #kick_flyingkick
JJXM DEAD, std_bellyflop
JJXM OPPOVERHEAD, #kick_flyingkick
JJXM WAITANIM, #kick_flyingkick
JJXM GRAPPLE, #kick_flyingkick
JJXM MASTER, #kick_flyingkick
JJXM SLAVE, #kick_flyingkick
JJXM HEADHOLD, #kick_flyingkick
JJXM HEADHELD, #kick_flyingkick
JJXM CHOKEHOLD, #kick_flyingkick
JJXM PUPPET, #kick_flyingkick
JJXM PUPPET2, #kick_flyingkick
JJXM INAIR2, #kick_flyingkick
JJXM_END
#kick_rets
rets
*****
#kick_flyingkick
calla ck_ignore
jrc #z
movi hrt_flying_kick_anim,a0
calla change_anim1a
SETMODE INAIR
WRSND W_BRET,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 hrt_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
; ;check unint
; move *a13(ANIMODE),a14
; btst MODE_UNINT_BIT,a14
; jrnz #no_interrupt
move *a13(STICK_VAL_CUR),a0
btst PLAYER_DOWN_BIT,a0
jrz #no_climbdown
movi hrt_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
rets
;For standing on top of turnbuckles
#action_table
.long #z,#punch,#block,#block ;0-3
.long #super_punch,#super_punch,#block,#block ;4-7
.long #kick,#punchkick,#block,#block ;8-11
.long #super_punch,#punchkick,#block,#block ;12-15
.long #super_kick,#super_kick,#block,#block ;16-19
.long #graboh,#graboh,#block,#block ;20-23
.long #super_kick,#punchkick,#block,#block ;24-27
.long #graboh,#graboh,#block,#block ;28-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
#block ;2
#super_punch ;4
#kick ;8
#super_kick ;16
#graboh
#punchkick
SETMODE INAIR
WRSND W_BRET,TURNDIVE_T1,TURNDIVE_T2
movi hrt_tbukl_leap_anim,a0
calla change_anim1a
rets
#*****************************************************************************
* blocking
mode_block ;7
move *a13(BLOCK_TIME),a0
inc a0
move a0,*a13(BLOCK_TIME)
cmpi 160,a0
jrlt #no
calla get_opp_plyrmode
cmpi MODE_BLOCK,a0
jrnz #no
move *a13(CLOSEST_XDIST),a0
cmpi 61h,a0
jrge #no
cmpi 45,a0
jrlt #no
move *a13(CLOSEST_ZDIST),a0
cmpi 30,a0
jrlt #punchblock
#no
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
movi hrt_4_push_anim,a0
calla change_anim1a
WRSND W_BRET,PUSH_T1,PUSH_T2
rets
#*****************************************************************************
* BRET with zero health
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
#*****************************************************************************
* opponent held overhead
mode_oppoverhead ;10
;
; move *a13(ATTACH_PROC),a2,L ;proc attached to
; jrz #not_attached
; move *a2(ATTACH_PROC),a0,L
; jrnz #still_attached
;
;#not_attached
;
; move *a13(ANIMODE),a0 ;* remove this????
; btst MODE_UNINT_BIT,a0 ;*
; jrnz #no_interrupt ;*
;
; clr a0
; move a0,*a13(ATTACH_PROC),L
;
; SETMODE NORMAL
;
; movi MODE_NORMAL,a0
; move a0,*a13(ANIMODE)
;
; rets
;
;#still_attached
; move *a13(ANIMODE),a0
; btst MODE_UNINT_BIT,a0
; jrnz #no_interrupt
;
; move *a13(FACING_DIR),a0
; andni MOVE_UP,a0
; ori MOVE_DOWN,a0
; move a0,*a13(FACING_DIR)
; move a0,*a13(NEW_FACING_DIR)
;
; move a13,a0
; calla wres_get_stick_val_cur
; jrz #stand
;
; move a0,*a13(MOVE_DIR)
; calla execute_walk
;
; movi hrt_holdoh_anim,a0
; calla change_anim2
; jruc #ck_butns
;#stand
; clr a0
; move a0,*a13(MOVE_DIR)
; move a0,*a13(OBJ_XVEL),L
; move a0,*a13(OBJ_ZVEL),L
;
; movi hrt_stndholdoh_anim,a0
; calla change_anim1
;
;#ck_butns
;
;
; move a13,a0
; calla wres_get_but_val_down
; andi 011111b,a0
; X32 a0
; addi #action_table,a0
; move *a0,a0,L
; call a0
;
;#no_interrupt
; rets
;
;#action_table
; .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
;#block ;2
;#super_punch ;4
;#kick ;8
;#super_kick ;16
;
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
calla master_keep_attached ;keep slave attached to me
rets
#*****************************************************************************
mode_slave ;15
rets
#*****************************************************************************
mode_headhold ;16
;Bozo power move
.ref bozo_check
calla bozo_check
jrnc #fail
WRSND W_BRET,GRABFLING_T1,GRABFLING_T2
movi hrt_3_pile_driver_anim,a0
move @PCNT,a14
btst 0,a14
jrz #tag
movi hrt_hh_2_ddt_anim,a0
#tag calla change_anim1a
rets
#fail
move *a13(WHOIHIT),a0,L
move *a0(PLYRMODE),a0
cmpi MODE_HEADHELD,a0
jrnz #exit
; 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
move *a13(OBJ_ZPOS),a14,L
subi [6,0],a14
move a14,*a13(OBJ_ZPOS),L
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,#punch,#block,#block ;0-3
.long #super_punch,#super_punch,#block,#block ;4-7
.long #kick,#punchkick,#block,#block ;8-11
.long #super_punch,#punchkick,#block,#block ;12-15
.long #super_kick,#super_kick,#block,#block ;16-19
.long #graboh,#graboh,#block,#block ;20-23
.long #super_kick,#punchkick,#block,#block ;24-27
.long #graboh,#graboh,#block,#block ;28-31
; .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
#graboh
#z ;0
rets
*****
#punch ;1
CALLA FIND_AND_KILL_ENDLESS
move *a13(STICK_VAL_CUR),a0
move *a13(NEW_FACING_DIR),a1
andi 0ch,a1
cmp a0,a1
jrnz #knee
WRSND W_BRET,UPRCUT_T1,UPRCUT,T2
movi hrt_uppercuts_to_head_anim,a0
calla change_anim1a
rets
*****
#super_punch ;4
CALLA FIND_AND_KILL_ENDLESS
move *a13(STICK_VAL_CUR),a0
btst MOVE_DOWN_BIT,a0
jrz #super_kick
SPCDMG D_UPRCUT/2,15
movi hrt_4_uppercut_anim,a0
calla change_anim1a
WRSND W_BRET,UPRCUT_T1,UPRCUT,T2
rets
;#face
;;If stick is toward opponent, then do face driver
; move *a13(NEW_FACING_DIR),a1
; andi 0ch,a1
; cmp a0,a1
; jrnz #z
;
; CALLA FIND_AND_KILL_ENDLESS
;
; movi hrt_3_face_driver_anim,a0
; calla change_anim1a
;
; WRSND W_BRET,GRABHOLD_T1,GRABHOLD,T2
; rets
*****
#kick ;8
CALLA FIND_AND_KILL_ENDLESS
move *a13(STICK_VAL_CUR),a0
move *a13(NEW_FACING_DIR),a1
andi 0ch,a1
cmp a0,a1
jrnz #knee
WRSND W_BRET,UPRCUT_T1,UPRCUT,T2
movi hrt_knees_to_head_anim,a0
calla change_anim1a
rets
*****
#punchkick ;9
#knee
CALLA FIND_AND_KILL_ENDLESS
movi hrt_4_knee_to_head_anim,a0
calla change_anim1a
WRSND W_BRET,KICK_T1,KICK_T2
rets
*****
#super_kick ;16
rets
#*****************************************************************************
mode_puppet2 ;17
; ;check for the head-grab breaker
; move *a13(BUT_VAL_DOWN),a0
; btst PLAYER_KICK_BIT,a0
; jrz #out
;
; ;check the time - must do it within 20 ticks
; move *a13(HEAD_GRAB_TIME),a14
; move @PCNT,a0
; sub a14,a0
; cmpi KICK_OUT,a0
; jrgt #out
;
; move *a13(PLYR_TYPE),a14
; cmpi PTYPE_DRONE,a14
; jrz #out
;
; ;okay, waste 'im. - detach, setmode, immobilize, and launch the knee
; move *a13(ATTACH_PROC),a0,L
; clr a14
; move a14,*a13(ATTACH_PROC),L
; move a14,*a0(ATTACH_PROC),L
; movi 20,a14
; move a14,*a0(IMMOBILIZE_TIME)
; SETMODE NORMAL
; jruc std_knee
;
;#out
rets
#*****************************************************************************
mode_headheld ;19
move *a13(ANIMODE),a0
btst MODE_NOGRAVITY_BIT,a0
janz mode_choking
;Bozo reversal
calla bozo_check
jrnc #fail
PUSH a8
move a13,a8
CALLA DO_REVERSAL
CALLA DO_REVERSAL_MESS
PULL a8
WRSND W_BRET,GRABFLING_T1,GRABFLING_T2
movi hrt_3_pile_driver_anim,a0
move @PCNT,a14
btst 0,a14
jrz #tag
movi hrt_hh_2_ddt_anim,a0
#tag calla change_anim1a
rets
#fail
;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
movi hrt_3_head_held_stand_anim,a0
calla change_anim1a
#no_luck
rets
#*****************************************************************************
mode_chokehold ;24
rets
#*****************************************************************************
;#VEL equ 30000h ;38000h ;30000h
;#DVEL equ 21f0eh ;27978h ;21f0eh
;#VEL equ 38000h ;38000h ;30000h
;#DVEL equ 30000h ;27978h ;21f0eh
#VEL equ 3a000h ;38000h ;30000h
#DVEL equ 31000h ;27978h ;21f0eh
SUBR hrt_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 hrt_rotate_anims_table
; old = up right
.long hrt_stand2_anim ;new = up right
.long hrt_2_to_4_turn_anim ; = down right
.long hrt_2_to_6_turn_anim ; = down left ***
.long hrt_2_to_8_turn_anim ; = up left
; old = down right
.long hrt_4_to_2_turn_anim ;new = up right
.long hrt_stand4_anim ; = down right
.long hrt_4_to_6_turn_anim ; = down left
.long hrt_4_to_8_turn_anim ; = up left ***
; old = down left
.long hrt_6_to_2_turn_anim ;new = up right ***
.long hrt_6_to_4_turn_anim ; = down right
.long hrt_stand6_anim ; = down left
.long hrt_6_to_8_turn_anim ; = up left
; old = up left
.long hrt_8_to_2_turn_anim ;new = up right
.long hrt_8_to_4_turn_anim ; = down right ***
.long hrt_8_to_6_turn_anim ; = down left
.long hrt_stand8_anim ; = up left
SUBR hrt_leg_anims_table
; MOVE
;(#1 - UP) FACING
.long hrt_walk1_f2_anim ;1 (UP)
.long hrt_walk1_f2_anim ;2 (UP_RIGHT)
.long hrt_walk1_f4_anim ;3 (RIGHT)
.long hrt_walk1_f4_anim ;4 (DOWN_RIGHT)
.long hrt_walk1_f4_anim ;5 (DOWN)
.long hrt_walk1_f4_anim ;6 (DOWN_LEFT)
.long hrt_walk1_f2_anim ;7 (LEFT)
.long hrt_walk1_f2_anim ;8 (UP-LEFT)
;(#2 - UP-RIGHT)
.long hrt_walk2_f2_anim ;1 (UP)
.long hrt_walk2_f2_anim ;2 (UP_RIGHT)
.long hrt_walk2_f2_anim ;3 (RIGHT)
.long hrt_walk2_f4_anim ;4 (DOWN_RIGHT)
.long hrt_walk8_f4_anim ;5 (DOWN)
.long hrt_walk8_f4_anim ;6 (DOWN_LEFT)
.long hrt_walk4_f2_anim ;7 (LEFT)
.long hrt_walk4_f2_anim ;8 (UP-LEFT)
;(#3 - RIGHT)
.long hrt_walk2_f2_anim ;1 (UP)
.long hrt_walk2_f2_anim ;2 (UP_RIGHT)
.long hrt_walk2_f2_anim ;3 (RIGHT)
.long hrt_walk4_f4_anim ;4 (DOWN_RIGHT)
.long hrt_walk4_f4_anim ;5 (DOWN)
.long hrt_walk8_f4_anim ;6 (DOWN_LEFT)
.long hrt_walk6_f2_anim ;7 (LEFT)
.long hrt_walk6_f2_anim ;8 (UP-LEFT)
;(#4 - DOWN-RIGHT)
.long hrt_walk2_f2_anim ;1 (UP)
.long hrt_walk8_f2_anim ;2 (UP_RIGHT)
.long hrt_walk4_f4_anim ;3 (RIGHT)
.long hrt_walk4_f4_anim ;4 (DOWN_RIGHT)
.long hrt_walk2_f4_anim ;5 (DOWN)
.long hrt_walk6_f4_anim ;6 (DOWN_LEFT)
.long hrt_walk2_f2_anim ;7 (LEFT)
.long hrt_walk6_f2_anim ;8 (UP-LEFT)
;(#5 - DOWN)
.long hrt_walk5_f2_anim ;1 (UP)
.long hrt_walk5_f2_anim ;2 (UP_RIGHT)
.long hrt_walk5_f4_anim ;3 (RIGHT)
.long hrt_walk5_f4_anim ;4 (DOWN_RIGHT)
.long hrt_walk5_f4_anim ;5 (DOWN)
.long hrt_walk5_f4_anim ;6 (DOWN_LEFT)
.long hrt_walk5_f2_anim ;7 (LEFT)
.long hrt_walk5_f2_anim ;8 (UP-LEFT)
;(#6 - DOWN-LEFT)
.long hrt_walk2_f2_anim ;1 (UP)
.long hrt_walk6_f2_anim ;2 (UP_RIGHT)
.long hrt_walk2_f2_anim ;3 (RIGHT)
.long hrt_walk6_f4_anim ;4 (DOWN_RIGHT)
.long hrt_walk2_f4_anim ;5 (DOWN)
.long hrt_walk4_f4_anim ;6 (DOWN_LEFT)
.long hrt_walk2_f2_anim ;7 (LEFT)
.long hrt_walk8_f2_anim ;8 (UP-LEFT)
;(#7 - LEFT)
.long hrt_walk2_f2_anim ;1 (UP)
.long hrt_walk6_f2_anim ;2 (UP_RIGHT)
.long hrt_walk6_f2_anim ;3 (RIGHT)
.long hrt_walk8_f4_anim ;4 (DOWN_RIGHT)
.long hrt_walk4_f4_anim ;5 (DOWN)
.long hrt_walk4_f4_anim ;6 (DOWN_LEFT)
.long hrt_walk2_f2_anim ;7 (LEFT)
.long hrt_walk2_f2_anim ;8 (UP-LEFT)
;(#8 - UP-LEFT)
.long hrt_walk2_f2_anim ;1 (UP)
.long hrt_walk4_f2_anim ;2 (UP_RIGHT)
.long hrt_walk6_f2_anim ;3 (RIGHT)
.long hrt_walk8_f4_anim ;4 (DOWN_RIGHT)
.long hrt_walk6_f4_anim ;5 (DOWN)
.long hrt_walk2_f4_anim ;6 (DOWN_LEFT)
.long hrt_walk2_f2_anim ;7 (LEFT)
.long hrt_walk2_f2_anim ;8 (UP-LEFT)
SUBR hrt_torso_anims_table
; old = up right
.long hrt_torso2_anim ;new = up right
.long hrt_2_to_4_turn2_anim ; = down right
.long hrt_2_to_6_turn2_anim ; = down left ***
.long hrt_2_to_8_turn2_anim ; = up left
; old = down right
.long hrt_4_to_2_turn2_anim ;new = up right
.long hrt_torso4_anim ; = down right
.long hrt_4_to_6_turn2_anim ; = down left
.long hrt_4_to_8_turn2_anim ; = up left ***
; old = down left
.long hrt_6_to_2_turn2_anim ;new = up right ***
.long hrt_6_to_4_turn2_anim ; = down right
.long hrt_torso6_anim ; = down left
.long hrt_6_to_8_turn2_anim ; = up left
; old = up left
.long hrt_8_to_2_turn2_anim ;new = up right
.long hrt_8_to_4_turn2_anim ; = down right ***
.long hrt_8_to_6_turn2_anim ; = down left
.long hrt_torso8_anim ; = up left
******************************************************************************
.end