wwf-wrestlemania/BACKUP/DOINK.ASM

3117 lines
61 KiB
NASM
Raw Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

;Do some 5x damage moves, etc.
;Do speed up walk move - flash player white!
;Flash player on powerups!
;Stop near rope pile driver zeroing of y vel
**************************************************************
*
* 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
.REF DO_REVERSAL_MESS
.ref ADD_IF_SILENT,JUMP_ROPES,CLIMB_ROPES
.ref check_dizzy
.ref create_damage_points
.ref set_getup_time
.ref wres_get_but_val_up,wres_get_but_val_down,wres_get_but_val_cur
.ref wres_get_stick_val_cur
.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 start_run,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 lineup_grapple,lineup_headhold
; .ref break_lockup
.ref slide_offscr
;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_2ndwind_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_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 wres_get_stick_rel_new
******************************************************************************
* 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 #buzz
.long #earslap
.long #grab_fling
.long #hammer
.long #grab_toss
.long #neck_grab
.long #boxing_pnch
.long 0
******************************************************************************
*
* SPECIAL MOVE PROCESSES - Secret moves
*
;a8=process of wrestler
SUBR dnk_smove_table
.long dnk_hdhold_slam
.long dnk_hdhold_pile
.long dnk_hdhold_combo1
.long dnk_hdhold_combo2
.long dnk_grab_toss_air
.long dnk_walk_fast
.long 0
*******************************************************************************
#buzz
move a13,a0
calla wres_get_but_val_up
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
; cmpi 6*60,a0 ;< max?
; jrgt #no_punch
;Held punch button down for more than 2 seconds.
;If opponent is on ground, try hammer move
callr scrt_buzz
setc
rets
#no_punch
clrc
rets
scrt_buzz
move *a13(PLYRMODE),a0
cmpi MODE_HEADHELD,a0
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,a0
calla wres_get_stick_val_cur
move *a13(NEW_FACING_DIR),a1
andi 0ch,a1
cmp a0,a1
jrnz #norm
; movi [7,0],a0
; move *a13(FACING_DIR),a14
; btst MOVE_RIGHT_BIT,a14
; jrnz #abs ;right
; neg a0 ;left
;#abs
; move a0,*a13(OBJ_XVEL),L
; movi [3,0],a0
; move a0,*a13(OBJ_YVEL),L
#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
.ref dnk_3_head_hold_anim
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,GRABFLING_T1,GRABFLING_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,GRABFLING_T2
rets
*******************************************************************************
#grab_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_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,GRABFLING_T1,GRABFLING_T2
rets
*******************************************************************************
;#2nd_wind1
; .word J_UP, J_REAL_LR
; .word J_UP_AWAY, J_REAL_LR
; .word J_AWAY, J_REAL_LR
; .word J_DOWN_AWAY, J_REAL_LR
; .word J_DOWN, J_REAL_LR
; .word J_DOWN_TOWARD, J_REAL_LR
; .word J_TOWARD, J_REAL_LR
; .word J_UP_TOWARD, J_REAL_LR
; .word J_UP, J_REAL_LR
; .word 8000h | 50 ;max
; .long scrt_2ndwind
;
;scrt_2ndwind
; move *a13(ANIMODE),a0
; btst MODE_UNINT_BIT,a0
; jrnz #out
;
; movi dnk_2ndwind_anim,a0
; calla change_anim1a
;
#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
CALLA DO_REVERSAL
CALLA DO_REVERSAL_MESS
;Make sure the reversal works!
movk 10,a0
move a0,*a8(SAFE_TIME)
move *a8(OBJ_ZPOS),a0,L
addi [5,0],a0
move a0,*a8(OBJ_ZPOS),L
#slam
.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
CALLA DO_REVERSAL
CALLA DO_REVERSAL_MESS
;Make sure the reversal works!
movk 10,a0
move a0,*a8(SAFE_TIME)
move *a8(OBJ_ZPOS),a0,L
addi [5,0],a0
move a0,*a8(OBJ_ZPOS),L
#slam
movi dnk_3_pile_driver_anim,a14
move a14,*a8(SPECIAL_MOVE_ADDR),L
SLEEP 60
jruc #lp
; 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 B_SKICK,J_DOWN_AWAY,#lp
; WAITSWITCH_DWN J_AWAY,J_UP|J_DOWN,#lp
; WAITSWITCH_DWN J_TOWARD,J_UP|J_DOWN,#lp
; WAITSWITCH_DWN J_TOWARD,J_UP|J_DOWN,#lp
; 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
*******************************************************************************
#*
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 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
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 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
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
;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
; cmpi AT_SPINKIK,a0
; jrz #doit2
move *a8(CLOSEST_DIST),a0
cmpi 70h,a0
jrgt #lp
FACE24 dnk,hiptoss_anim
move a0,a14
move a14,*a8(SPECIAL_MOVE_ADDR),L
WRSND W_DOINK,GRABFLING_T1,GRABFLING_T2
SLEEP 60
jruc #lp
#doit2 FACE24 dnk,hiptoss2_anim
move a0,a14
move a14,*a8(SPECIAL_MOVE_ADDR),L
WRSND W_DOINK,GRABFLING_T1,GRABFLING_T2
SLEEP 60
jruc #lp
*******************************************************************************
#*
dnk_walk_fast
#TIMEOUT .equ 60
#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
jruc #lp
;DIE!
#*****************************************************************************
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
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,a0
calla wres_get_but_val_cur
move a0,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_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
;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 #no_climb
move a13,a0
calla wres_get_but_val_cur
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,a0
calla wres_get_but_val_down
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,a0
calla wres_get_stick_val_cur
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
#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 BOUNCING, #punch_rets ;5
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
*****
;#punch_yankdown
;std_yankdown
;
; move *a13(INRING),a0
; jrnz std_punch ;outside of ring
;
; movi dnk_2_yank_anim,a0
; calla change_anim1a
;
; WRSND W_DOINK,GRABHOLD_T1,GRABHOLD_T2
;
; rets
;*****
;#punch_hiptoss
;std_hiptoss
;
; movi dnk_hiptoss_anim,a0
; calla change_anim1a
;
; WRSND W_DOINK,HIPTOSS_T1,HIPTOSS_T2
;
; rets
*****
;maybe this doesn't happen automatically
;
; calla get_opp_plyrmode
; cmpi MODE_DIZZY,a0
; jrne #opp_not_dizzy
; move *a13(CLOSEST_XDIST),a0
; cmpi 80,a0
; jrlt #opp_not_dizzy
; FACE24 dnk,box_anim
; calla change_anim1a
; WRSND W_DOINK,SPUNCH_T1,SPUNCH_T2
*****
************
#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, 45,#spunch_special,#spunch_slap ;0
JJXM RUNNING, 85, 45,#spunch_special,#spunch_slap ;1
JJXM INAIR, 85, 45,#spunch_special,#spunch_slap ;2
JJXM ATTACHED, 85, 45,#spunch_special,#spunch_slap ;3
JJXM ONGROUND, 136,112,#spunch_lbowdrop,std_punch ;4
JJXM BOUNCING, 85, 45,#spunch_special,#spunch_slap ;1
; JJXM BOUNCING, #spunch_rets ;5
JJXM ONTURNBKL, #spunch_slap ;6
JJXM BLOCK, 85, 45,#spunch_special,#spunch_slap ;7
JJXM DIZZY, 85, 45,#spunch_special,#spunch_slap ;8
JJXM DEAD, 96,112,#spunch_lbowdrop,std_punch ;9
JJXM OPPOVERHEAD, 85, 45,#spunch_special,#spunch_slap ;10
JJXM CLIMBTURNBKL, std_punch ;11
JJXM WAITANIM, 85, 45,#spunch_special,#spunch_slap ;12
JJXM GRAPPLE, 85, 45,#spunch_special,#spunch_slap ;13
JJXM MASTER, 85, 45,#spunch_special,#spunch_slap ;14
JJXM SLAVE, 85, 45,#spunch_special,#spunch_slap ;15
JJXM HEADHOLD, 85, 45,#spunch_special,#spunch_slap ;16
JJXM HEADHELD, do_pile ;19
JJXM PUPPET, 85, 45,#spunch_special,#spunch_slap ;20
JJXM INAIR2, 85, 45,#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,a0
calla wres_get_stick_val_cur
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, 120,92,#kick_kick,#kick_flyingkick ;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, 120,92,#kick_kick,#kick_flyingkick ;5
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,a0
calla wres_get_stick_val_cur
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
; FACE24 dnk,graboh_anim
; calla change_anim1a
;
; WRSND W_DOINK,GRABHOLD_T1,GRABHOLD_T2
rets
#*****************************************************************************
*
* RUNNING (if GETUP_TIME > 0 then player is out of control)
*
#XRUN_VAL equ 60000h ;50000h
#XRUN2_VAL equ 88000h
#ZDRIFT_VAL equ 20000h ;18000h
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,a0
calla wres_get_stick_val_cur
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,a0
calla wres_get_stick_val_cur
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,a0
calla wres_get_but_val_down
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 #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
************
#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
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
; FACE24 dnk,run_stomp_anim
; calla change_anim1a
;
; 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
; move *a13(GETUP_TIME),a0
; jrnz #exit
;
; move *a13(ANIBASE),a0,L
; cmpi dnk_2_faceup_getup_anim,a0
; jrz #exit
; cmpi dnk_4_faceup_getup_anim,a0
; jrz #exit
;
; calla do_roll
; jrnz #exit ;did roll
;
; FACE24 dnk,faceup_getup_anim
; calla change_anim1a
;
;#exit
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,a0
calla wres_get_stick_val_cur
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,a0
calla wres_get_but_val_down
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 ;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
movi dnk_4_blbowdrop_anim,a0 ;Buckle
calla change_anim1a
rets
************
#block ;2
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,a0
; calla wres_get_stick_val_cur
; 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
;check unint
; move *a13(ANIMODE),a0
; btst MODE_UNINT_BIT,a0
; jrnz #no_interrupt
move a13,a0
calla wres_get_but_val_down
andi 011111b,a0
jrz #no_interrupt
X32 a0
addi #action_table,a0
move *a0,a0,L
call a0
#no_interrupt
rets
#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
; .long #z ;0
; .long #punch ;1
; .long #block ;2
; .long #punchblock ;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
************
#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
;
;
; 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 dnk_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 dnk_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 ;0
; rets
;
;************
;#punch ;1
;#block ;2
;#super_punch ;4
;#kick ;8
;#super_kick ;16
;
; movi dnk_ohthrow1_anim,a0
; calla change_anim1a
;
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,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
#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
;If stick is toward opponent, then do quick punches
move a13,a0
calla wres_get_stick_val_cur
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
move a13,a0
calla wres_get_stick_val_cur
btst PLAYER_DOWN_BIT,a0
jrz #punch
movi dnk_3_pile_driver_anim,a0
calla change_anim1a
rets
#punchkick
#graboh
#kick
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,a0
calla wres_get_stick_val_cur
move *a13(NEW_FACING_DIR),a1
andi 0ch,a1
cmp a0,a1
jrnz #z
;Quick knees
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
;
;;No reversal if getup_time is set
; move *a13(GETUP_TIME),a0
; jrnz #out
;
;;If stick is toward opponent, then do reversal
;
;
; move a13,a0
; calla wres_get_stick_val_cur
; move *a13(NEW_FACING_DIR),a1
; andi 0ch,a1
; cmp a0,a1
; jrnz #out
;
; move a13,a0
; calla wres_get_but_val_down
; btst PLAYER_SPUNCH_BIT,a0
; jrz #out
;
; CALLA DO_REVERSAL
; CALLA DO_REVERSAL_MESS
;
;;Successful reversal pile drive
; move *a13(OBJ_ZPOS),a0,L
; addi [5,0],a0
; move a0,*a13(OBJ_ZPOS),L
;
; movi dnk_3_pile_driver_anim,a0
; calla change_anim1a
;
;#out
; 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,a0
calla wres_get_stick_val_cur
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,a0
; calla wres_get_stick_val_cur
;
; ;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,a0
; calla wres_get_but_val_down
; move a0,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,a0
; calla wres_get_stick_val_cur
; move a0,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,a0
; calla wres_get_stick_val_cur
;
; ;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,a0
; calla wres_get_but_val_down
; move a0,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,a0
; calla wres_get_stick_val_cur
; move a0,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