wwf-wrestlemania/BACKUP/RAZOR.ASM

1530 lines
32 KiB
NASM
Raw Permalink 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.

**************************************************************
*
* Software: Jamie Rivett
* Initiated: 1/20/94
*
* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC.
*
**************************************************************
.file "razor.asm"
.title "Razor Ramon 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"
******************************************************************************
* EXTERNAL REFERENCES
.ref change_anim1a,change_anim2a,do_taunt,bounce_off_ropes
.ref check_secret_moves,wres_get_but_val_cur,master_keep_attached
.ref climb_turnbuckle,execute_walk,get_opp_plyrmode,mode_inair2
.ref wres_get_stick_val_cur,process_ptrs,keep_attached
.ref change_anim1,start_run,JUMP_ROPES,clear_damage_log
.ref wres_get_but_val_down,wres_get_stick_rel_new
.ref DO_REVERSAL,DO_REVERSAL_MESS
;animation sequences
.ref rzr_run2_anim
.ref rzr_3_head_hold_anim
.ref rzr_stand2_anim,rzr_stand8_anim
.ref rzr_stand4_anim,rzr_stand6_anim
.ref rzr_torso2_anim,rzr_torso8_anim
.ref rzr_torso4_anim,rzr_torso6_anim
.ref rzr_2_to_4_turn_anim,rzr_8_to_6_turn_anim ;stand
.ref rzr_4_to_2_turn_anim,rzr_6_to_8_turn_anim
.ref rzr_4_to_6_turn_anim,rzr_6_to_4_turn_anim
.ref rzr_2_to_8_turn_anim,rzr_8_to_2_turn_anim
.ref rzr_4_to_8_turn_anim,rzr_6_to_2_turn_anim
.ref rzr_2_to_6_turn_anim,rzr_8_to_4_turn_anim
.ref rzr_2_to_4_turn2_anim,rzr_8_to_6_turn2_anim ;torso
.ref rzr_4_to_2_turn2_anim,rzr_6_to_8_turn2_anim
.ref rzr_4_to_6_turn2_anim,rzr_6_to_4_turn2_anim
.ref rzr_2_to_8_turn2_anim,rzr_8_to_2_turn2_anim
.ref rzr_4_to_8_turn2_anim,rzr_6_to_2_turn2_anim
.ref rzr_2_to_6_turn2_anim,rzr_8_to_4_turn2_anim
.ref rzr_walk1_f2_anim,rzr_walk2_f2_anim,rzr_walk4_f2_anim
.ref rzr_walk5_f2_anim,rzr_walk6_f2_anim,rzr_walk8_f2_anim
.ref rzr_walk1_f4_anim,rzr_walk2_f4_anim,rzr_walk4_f4_anim
.ref rzr_3_head_held_stand_anim
.ref rzr_walk5_f4_anim,rzr_walk6_f4_anim,rzr_walk8_f4_anim
.ref rzr_2_punch_anim,rzr_4_punch_anim
.ref rzr_2_pin_anim,rzr_4_pin_anim
.ref rzr_2_uprcut_anim,rzr_4_uprcut_anim
.ref rzr_2_butt_anim,rzr_4_butt_anim
.ref rzr_2_kick_anim,rzr_4_kick_anim
.ref rzr_2_knee_anim,rzr_4_knee_anim
.ref rzr_flying_kick_anim
.ref rzr_2_ground_punch_anim,rzr_4_ground_punch_anim
.ref rzr_2_stomp_anim,rzr_4_stomp_anim
.ref rzr_2_grabfling_anim,rzr_4_grabfling_anim
.ref rzr_2_hair_pickup_anim,rzr_4_hair_pickup_anim
.ref rzr_2_push_anim,rzr_4_push_anim
.ref rzr_4_bigboot_anim
.ref rzr_climb_down_anim,rzr_climb_up_anim
.ref rzr_2_block_anim,rzr_4_block_anim
.ref rzr_2_hiptoss_anim,rzr_4_hiptoss_anim
.ref rzr_flying_elbow_anim,rzr_3_slash_anim
.ref rzr_2_rugshake_anim,rzr_4_rugshake_anim
.ref rzr_tbukl_elbow_anim,rzr_3_pile_driver_anim
******************************************************************************
* SYMBOLS DEFINED IN THIS FILE
******************************************************************************
* EQUATES FOR THIS FILE
#*****************************************************************************
razor_secret_moves
.long #button_hold ;must have this one
.long #neck_grab
.long #grab_fling
.long #hip_toss
.long 0
******************************************************************************
*
* SPECIAL MOVE PROCESSES - Secret moves
*
;a8=process of wrestler
SUBR rzr_smove_table
.long rzr_hdhold_pile
.long 0
******************************************************************************
#button_hold
clrc
rets
******************************************************************************
#neck_grab
.word B_SPUNCH, J_REAL_LR | J_TOWARD | J_AWAY | J_UP
.word J_TOWARD, J_REAL_LR | J_UP | J_DOWN
.word J_TOWARD, J_REAL_LR | J_UP | J_DOWN
.word 8000h | 30 ;max
.long #scrt_neck
SUBRP #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
movi rzr_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
SUBRP #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 rzr,hiptoss_anim
calla change_anim1a
WRSND W_RAZOR,GRABFLING_T1,GRABFLING_T2
rets
#nope
FACE24 rzr,grabfling_anim
calla change_anim1a
WRSND W_RAZOR,GRABFLING_T1,GRABFLING_T2
#out rets
******************************************************************************
#hip_toss
.word B_PUNCH | J_AWAY, J_REAL_LR | J_UP | J_DOWN
.word 8000h | 10 ;max
.long #scrt_hiptoss
SUBRP #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
move *a13(CLOSEST_DIST),a0
cmpi 70h,a0
jrgt #out
FACE24 rzr,hiptoss_anim
calla change_anim1a
WRSND W_RAZOR,GRABFLING_T1,GRABFLING_T2
rets
#*****************************************************************************
rzr_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
PUSH a13
move a8,a13
calla DO_REVERSAL
calla DO_REVERSAL_MESS
PULL a13
;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 rzr_3_pile_driver_anim,a14
move a14,*a8(SPECIAL_MOVE_ADDR),L
SLEEP 60
jruc #lp
#*****************************************************************************
SUBR razor_ani_init
move *a13(FACING_DIR),a0
btst PLAYER_RIGHT_BIT,a0
jrnz #p1
;Plyr 2
movi rzr_stand4_anim,a0
calla change_anim1a
movi rzr_torso4_anim,a0
calla change_anim2a
PUSH a10
move a13,a10
CREATE0 do_taunt
PULL a10
rets
#p1
movi rzr_stand2_anim,a0
calla change_anim1a
movi rzr_torso2_anim,a0
calla change_anim2a
rets
#*****************************************************************************
*
* RAZORS CONTROL CODE
*
* a13 = * razor process
SUBR move_razor
movi razor_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 ;0
move *a13(ANIMODE),a0
btst MODE_UNINT_BIT,a0
jrnz #no_interrupt
;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 rzr,pin_anim
calla change_anim1a
rets
#opp_notgnd
#opp_not_dead
;MJT Start
move *a13(IMMOBILIZE_TIME),a0
jrnz #no_climb
;MJT End
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
#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
.ref ADD_IF_SILENT,CLIMB_ROPES
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
************
#graboh
;This is both super buttons at the same time
rets
#z
rets
************
#punch ;1
*
* MODE DX DZ ACTION
* ----------------------------------------------------
* normal < 62 95 headbutt
* normal > normal punch
*
* onground < 120 120 elbow drop
* onground > normal punch
*
* running |
* bouncing hip toss
*
* onturnbkl |
* climbturnbkl normal punch
*
JJXM_INIT
JJXM NORMAL, 62, 95,#punch_hdbutt,#punch_punch
JJXM DIZZY, 62, 95,#punch_hdbutt,#punch_punch
JJXM BLOCK, 62, 95,#punch_hdbutt,#punch_punch
JJXM ONGROUND, 120,120,#punch_lbdrop,#punch_punch
JJXM RUNNING, #punch_hiptoss
JJXM BOUNCING, #punch_hiptoss
JJXM ONTURNBKL, #punch_punch
JJXM CLIMBTURNBKL, #punch_punch
JJXM INAIR, 62, 95,#punch_hdbutt,#punch_punch
JJXM ATTACHED, 62, 95,#punch_hdbutt,#punch_punch
JJXM DEAD, 62, 95,#punch_hdbutt,#punch_punch
JJXM OPPOVERHEAD, 62, 95,#punch_hdbutt,#punch_punch
JJXM WAITANIM, 62, 95,#punch_hdbutt,#punch_punch
JJXM GRAPPLE, 62, 95,#punch_hdbutt,#punch_punch
JJXM MASTER, 62, 95,#punch_hdbutt,#punch_punch
JJXM SLAVE, 62, 95,#punch_hdbutt,#punch_punch
JJXM HEADHOLD, 62, 95,#punch_hdbutt,#punch_punch
JJXM HEADHELD, 62, 95,#punch_hdbutt,#punch_punch
JJXM PUPPET, 62, 95,#punch_hdbutt,#punch_punch
JJXM INAIR2, 62, 95,#punch_hdbutt,#punch_punch
JJXM_END
*****
#punch_punch
std_punch
FACE24 rzr,punch_anim
calla change_anim1a
WRSND W_RAZOR,PUNCH_T1,PUNCH_T2
rets
*****
#punch_hdbutt
FACE24 rzr,butt_anim
calla change_anim1a
WRSND W_RAZOR,HDBUTT_T1,HDBUTT_T2
rets
*****
#punch_lbdrop
FACE24 rzr,ground_punch_anim
calla change_anim1a
WRSND W_RAZOR,LBOWDROP_T1,LBOWDROP_T2
rets
*****
#punch_hiptoss
FACE24 rzr,hiptoss_anim
calla change_anim1a
WRSND W_RAZOR,HIPTOSS_T1,HIPTOSS_T2
rets
************
#block ;2
std_block
FACE24 rzr,block_anim
calla change_anim1a
rets
************
#super_punch ;4
*
* MODE DX DZ ACTION
* ----------------------------------------------------
* normal < 65 45 headbutt or uppercut
* > blade slash
*
* onground < 120 120 elbow drop (or rug shake or hair pickup)
* onground > normal punch
*
* running |
* bouncing hip toss
*
* onturnbkl |
* climbturnbkl normal punch
*
JJXM_INIT
JJXM NORMAL, 65, 45,#spunch_close,#spunch_far
JJXM DIZZY, 65, 45,#spunch_close,#spunch_far
JJXM BLOCK, 65, 45,#spunch_close,#spunch_far
JJXM ONGROUND, 120,120,#spunch_lbowdrop,std_punch
JJXM RUNNING, #spunch_hiptoss
JJXM BOUNCING, #spunch_hiptoss
JJXM ONTURNBKL, 65, 45,#spunch_close,#spunch_far
JJXM CLIMBTURNBKL, 65, 45,#spunch_close,#spunch_far
JJXM INAIR, 65, 45,#spunch_close,#spunch_far
JJXM ATTACHED, 65, 45,#spunch_close,#spunch_far
JJXM BLOCK, 65, 45,#spunch_close,#spunch_far
JJXM OPPOVERHEAD, 65, 45,#spunch_close,#spunch_far
JJXM WAITANIM, 65, 45,#spunch_close,#spunch_far
JJXM GRAPPLE, 65, 45,#spunch_close,#spunch_far
JJXM MASTER, 65, 45,#spunch_close,#spunch_far
JJXM SLAVE, 65, 45,#spunch_close,#spunch_far
JJXM HEADHOLD, 65, 45,#spunch_close,#spunch_far
JJXM HEADHELD, 65, 45,#spunch_close,#spunch_far
JJXM PUPPET, 65, 45,#spunch_close,#spunch_far
JJXM INAIR2, 65, 45,#spunch_close,#spunch_far
JJXM_END
#spunch_lbowdrop
;If near opponents head, and facing down, do the hair grab!
;If near feet, go for the rugshake
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 rzr,hair_pickup_anim
calla change_anim1
WRSND W_RAZOR,LBOWDROP_T1,LBOWDROP_T2
rets
#no
FACE24 rzr,rugshake_anim
calla change_anim1a
rets
*****
#spunch_close
;uppercut if stick is down, headbutt otherwise
move a13,a0
calla wres_get_stick_val_cur
move a0,a14
FACE24 rzr,uprcut_anim
btst MOVE_DOWN_BIT,a14
jrnz #ok
FACE24 rzr,butt_anim
#ok
calla change_anim1a
WRSND W_RAZOR,UPRCUT_T1,UPRCUT_T2
rets
*****
#spunch_far
movi rzr_3_slash_anim,a0
calla change_anim1a
rets
*****
#spunch_hiptoss
FACE24 rzr,hiptoss_anim,a0
calla change_anim1a
WRSND W_RAZOR,SPUNCH_T1,SPUNCH_T2
rets
************
#kick ;8
#super_kick ;16
*
* MODE DX DZ ACTION
* ----------------------------------------------------
* normal < 60 50 knee
* > normal kick
*
* onground < 120 120 stomp
* onground > normal kick
*
* running |
* bouncing big boot
*
* onturnbkl | normal kick
* climbturnbkl normal kick
*
JJXM_INIT
JJXM NORMAL, 60, 50,#kick_knee,#kick_kick
JJXM DIZZY, 60, 50,#kick_knee,#kick_kick
JJXM BLOCK, 60, 50,#kick_knee,#kick_kick
JJXM ONGROUND, 120,120,#kick_stomp,#kick_kick
JJXM RUNNING, #kick_bigboot
JJXM BOUNCING, #kick_bigboot
JJXM ONTURNBKL, #kick_kick
JJXM CLIMBTURNBKL, #kick_kick
JJXM INAIR, 60, 50,#kick_knee,#kick_kick
JJXM ATTACHED, 60, 50,#kick_knee,#kick_kick
JJXM DEAD, 60, 50,#kick_knee,#kick_kick
JJXM OPPOVERHEAD, 60, 50,#kick_knee,#kick_kick
JJXM WAITANIM, 60, 50,#kick_knee,#kick_kick
JJXM GRAPPLE, 60, 50,#kick_knee,#kick_kick
JJXM MASTER, 60, 50,#kick_knee,#kick_kick
JJXM SLAVE, 60, 50,#kick_knee,#kick_kick
JJXM HEADHOLD, 60, 50,#kick_knee,#kick_kick
JJXM HEADHELD, 60, 50,#kick_knee,#kick_kick
JJXM PUPPET, 60, 50,#kick_knee,#kick_kick
JJXM INAIR2, 60, 50,#kick_knee,#kick_kick
JJXM_END
*****
#kick_kick
FACE24 rzr,kick_anim
calla change_anim1a
WRSND W_RAZOR,KICK_T1,KICK_T2
rets
*****
#kick_knee
FACE24 rzr,knee_anim
calla change_anim1a
WRSND W_RAZOR,KICK_T1,KICK_T2
rets
*****
#kick_stomp
FACE24 rzr,stomp_anim
calla change_anim1a
WRSND W_RAZOR,KICK_T1,KICK_T2
rets
*****
#kick_bigboot
movi rzr_4_bigboot_anim,a0
calla change_anim1a
WRSND W_RAZOR,KICK_T1,KICK_T2
rets
************
#punchkick ;9
; FACE24 rzr,push_anim
; calla change_anim1a
;
; WRSND W_RAZOR,PUSH_T1,PUSH_T2
move *a13(ANIMODE),a0
btst MODE_UNINT_BIT,a0
jrnz #rets
move *a13(PLYRMODE),a0
move *a13(PLYRMODE),a0
cmpi MODE_RUNNING,a0
jreq #rets
cmpi MODE_BOUNCING,a0
jreq #rets
calla start_run
#rets
rets
#*****************************************************************************
*
* RUNNING (if GETUP_TIME > 0 then player is out of control)
*
#XRUN_VAL equ 60000h ;50000h
#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(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
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 punch
.long #block ;2
.long #z ;3
.long #super_punch ;4 super punch
.long #z,#z,#z ;5-7
.long #kick ;8 kick
.long #z,#z,#z,#z,#z,#z,#z ;9-15
.long #super_kick ;16 super kick
.long #z,#z,#z,#z,#z,#z,#z ;17-23
.long #z,#z,#z,#z,#z,#z,#z,#z ;24-31
************
#z
rets
************
#block ;2
move *a13(OBJ_XVEL),a0,L
sra 1,a0
move a0,*a13(OBJ_XVEL),L
SETMODE NORMAL
jruc std_block
************
#punch ;1
#super_punch ;4
*
* MODE DX DZ ACTION
* ----------------------------------------------------
*
* onground < 176 176 running stomp
* onground > nothing
*
* all else flying kick
*
JJXM_INIT
JJXM NORMAL, attack_flykick
JJXM BLOCK, attack_flykick
JJXM DIZZY, attack_flykick
JJXM ONGROUND, 176,176,#punch_flyelbow,#punch_rets
JJXM RUNNING, attack_flykick
JJXM BOUNCING, attack_flykick
JJXM ONTURNBKL, attack_flykick
JJXM CLIMBTURNBKL, attack_flykick
JJXM INAIR, attack_flykick
JJXM ATTACHED, attack_flykick
JJXM DEAD, attack_flykick
JJXM OPPOVERHEAD, attack_flykick
JJXM WAITANIM, attack_flykick
JJXM GRAPPLE, attack_flykick
JJXM MASTER, attack_flykick
JJXM SLAVE, attack_flykick
JJXM HEADHOLD, attack_flykick
JJXM HEADHELD, attack_flykick
JJXM PUPPET, attack_flykick
JJXM INAIR2, attack_flykick
JJXM_END
#punch_flyelbow
attack_flyelbow
movi rzr_flying_elbow_anim,a0
calla change_anim1a
move *a13(OBJ_XVEL),a0,L
sra 1,a0
move a0,*a13(OBJ_XVEL),L
WRSND W_RAZOR,FLYKICK_T1,FLYKICK_T2
rets
#punch_rets
rets
************
#kick ;4
#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_flykick
JJXM BLOCK, #kick_flykick
JJXM DIZZY, #kick_flykick
JJXM ONGROUND, 176,176,attack_flyelbow,#kick_rets
JJXM RUNNING, #kick_flykick
JJXM BOUNCING, #kick_flykick
JJXM ONTURNBKL, #kick_flykick
JJXM CLIMBTURNBKL, #kick_flykick
JJXM INAIR, #kick_flykick
JJXM ATTACHED, #kick_flykick
JJXM DEAD, #kick_flykick
JJXM OPPOVERHEAD, #kick_flykick
JJXM WAITANIM, #kick_flykick
JJXM GRAPPLE, #kick_flykick
JJXM MASTER, #kick_flykick
JJXM SLAVE, #kick_flykick
JJXM HEADHOLD, #kick_flykick
JJXM HEADHELD, #kick_flykick
JJXM PUPPET, #kick_flykick
JJXM INAIR2, #kick_flykick
JJXM_END
#kick_flykick
attack_flykick
movi rzr_flying_kick_anim,a0
calla change_anim1a
move *a13(OBJ_XVEL),a0,L
sra 1,a0
move a0,*a13(OBJ_XVEL),L
WRSND W_RAZOR,FLYKICK_T1,FLYKICK_T2
SETMODE INAIR
rets
#kick_rets
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 rzr_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 rzr_climb_up_anim,a14
jrne #no_climbdown
movi rzr_climb_down_anim,a0
calla change_anim1a
SETMODE CLIMBTURNBKL
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 #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
movi rzr_tbukl_elbow_anim,a0
calla change_anim1a
WRSND W_TAKER,FLYKICK_T1,FLYKICK_T2
rets
#*****************************************************************************
* blocking
mode_block ;7
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
*
SETMODE NORMAL
FACE24 rzr,push_anim
calla change_anim1a
WRSND W_RAZOR,PUSH_T1,PUSH_T2
rets
#*****************************************************************************
* razor 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
#*****************************************************************************
mode_dead ;9
rets
#*****************************************************************************
* opponent held overhead
mode_oppoverhead ;10
rets
#*****************************************************************************
*
* CLIMBING UP OR DOWN THE TURNBUCKLE
mode_climbturnbkl ;11
rets
#*****************************************************************************
mode_waitanim ;12
move *a13(ANIMODE),a0
btst MODE_END_BIT,a0
jrz #not_ended
move *a13(CODE_ADDR),a0,L
call a0
#not_ended
rets
#*****************************************************************************
mode_grapple ;13
rets
#*****************************************************************************
mode_master ;14
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 punch
.long #block ;2 block
.long #z ;3
.long #super_punch ;4 super punch
.long #z,#z,#z ;5-7
.long #kick ;8 kick
.long #punch,#z,#z,#kick,#z,#z,#z ;9-15
.long #super_kick ;16 super kick
.long #z,#z,#z,#punch,#z,#z,#z ;17-23
.long #kick,#z,#z,#z,#z,#z,#z,#z ;24-31
************
#block
#z ;0
rets
************
#punch ;1
#super_punch ;4
#kick ;8
#super_kick ;16
movi rzr_4_kick_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
movi rzr_3_head_held_stand_anim,a0
calla change_anim1a
#no_luck
rets
#*****************************************************************************
mode_puppet ;20
rets
#*****************************************************************************
mode_chokehold ;24
rets
#*****************************************************************************
#VEL equ 30000h ;normal vel
#DVEL equ 21f0eh ;diagonal
SUBR rzr_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 rzr_rotate_anims_table
; old = up right
.long rzr_stand2_anim ;new = up right
.long rzr_2_to_4_turn_anim ; = down right
.long rzr_2_to_6_turn_anim ; = down left ***
.long rzr_2_to_8_turn_anim ; = up left
; old = down right
.long rzr_4_to_2_turn_anim ;new = up right
.long rzr_stand4_anim ; = down right
.long rzr_4_to_6_turn_anim ; = down left
.long rzr_4_to_8_turn_anim ; = up left ***
; old = down left
.long rzr_6_to_2_turn_anim ;new = up right ***
.long rzr_6_to_4_turn_anim ; = down right
.long rzr_stand6_anim ; = down left
.long rzr_6_to_8_turn_anim ; = up left
; old = up left
.long rzr_8_to_2_turn_anim ;new = up right
.long rzr_8_to_4_turn_anim ; = down right ***
.long rzr_8_to_6_turn_anim ; = down left
.long rzr_stand8_anim ; = up left
SUBR rzr_leg_anims_table
; MOVE
;(#1 - UP) FACING
.long rzr_walk1_f2_anim ;1 (UP)
.long rzr_walk1_f2_anim ;2 (UP_RIGHT)
.long rzr_walk1_f4_anim ;3 (RIGHT)
.long rzr_walk1_f4_anim ;4 (DOWN_RIGHT)
.long rzr_walk1_f4_anim ;5 (DOWN)
.long rzr_walk1_f4_anim ;6 (DOWN_LEFT)
.long rzr_walk1_f2_anim ;7 (LEFT)
.long rzr_walk1_f2_anim ;8 (UP-LEFT)
;(#2 - UP-RIGHT)
.long rzr_walk2_f2_anim ;1 (UP)
.long rzr_walk2_f2_anim ;2 (UP_RIGHT)
.long rzr_walk2_f2_anim ;3 (RIGHT)
.long rzr_walk2_f4_anim ;4 (DOWN_RIGHT)
.long rzr_walk8_f4_anim ;5 (DOWN)
.long rzr_walk8_f4_anim ;6 (DOWN_LEFT)
.long rzr_walk4_f2_anim ;7 (LEFT)
.long rzr_walk4_f2_anim ;8 (UP-LEFT)
;(#3 - RIGHT)
.long rzr_walk2_f2_anim ;1 (UP)
.long rzr_walk2_f2_anim ;2 (UP_RIGHT)
.long rzr_walk2_f2_anim ;3 (RIGHT)
.long rzr_walk4_f4_anim ;4 (DOWN_RIGHT)
.long rzr_walk4_f4_anim ;5 (DOWN)
.long rzr_walk8_f4_anim ;6 (DOWN_LEFT)
.long rzr_walk6_f2_anim ;7 (LEFT)
.long rzr_walk6_f2_anim ;8 (UP-LEFT)
;(#4 - DOWN-RIGHT)
.long rzr_walk2_f2_anim ;1 (UP)
.long rzr_walk8_f2_anim ;2 (UP_RIGHT)
.long rzr_walk4_f4_anim ;3 (RIGHT)
.long rzr_walk4_f4_anim ;4 (DOWN_RIGHT)
.long rzr_walk2_f4_anim ;5 (DOWN)
.long rzr_walk6_f4_anim ;6 (DOWN_LEFT)
.long rzr_walk2_f2_anim ;7 (LEFT)
.long rzr_walk6_f2_anim ;8 (UP-LEFT)
;(#5 - DOWN)
.long rzr_walk5_f2_anim ;1 (UP)
.long rzr_walk5_f2_anim ;2 (UP_RIGHT)
.long rzr_walk5_f4_anim ;3 (RIGHT)
.long rzr_walk5_f4_anim ;4 (DOWN_RIGHT)
.long rzr_walk5_f4_anim ;5 (DOWN)
.long rzr_walk5_f4_anim ;6 (DOWN_LEFT)
.long rzr_walk5_f2_anim ;7 (LEFT)
.long rzr_walk5_f2_anim ;8 (UP-LEFT)
;(#6 - DOWN-LEFT)
.long rzr_walk2_f2_anim ;1 (UP)
.long rzr_walk6_f2_anim ;2 (UP_RIGHT)
.long rzr_walk2_f2_anim ;3 (RIGHT)
.long rzr_walk6_f4_anim ;4 (DOWN_RIGHT)
.long rzr_walk2_f4_anim ;5 (DOWN)
.long rzr_walk4_f4_anim ;6 (DOWN_LEFT)
.long rzr_walk2_f2_anim ;7 (LEFT)
.long rzr_walk8_f2_anim ;8 (UP-LEFT)
;(#7 - LEFT)
.long rzr_walk2_f2_anim ;1 (UP)
.long rzr_walk6_f2_anim ;2 (UP_RIGHT)
.long rzr_walk6_f2_anim ;3 (RIGHT)
.long rzr_walk8_f4_anim ;4 (DOWN_RIGHT)
.long rzr_walk4_f4_anim ;5 (DOWN)
.long rzr_walk4_f4_anim ;6 (DOWN_LEFT)
.long rzr_walk2_f2_anim ;7 (LEFT)
.long rzr_walk2_f2_anim ;8 (UP-LEFT)
;(#8 - UP-LEFT)
.long rzr_walk2_f2_anim ;1 (UP)
.long rzr_walk4_f2_anim ;2 (UP_RIGHT)
.long rzr_walk6_f2_anim ;3 (RIGHT)
.long rzr_walk8_f4_anim ;4 (DOWN_RIGHT)
.long rzr_walk6_f4_anim ;5 (DOWN)
.long rzr_walk2_f4_anim ;6 (DOWN_LEFT)
.long rzr_walk2_f2_anim ;7 (LEFT)
.long rzr_walk2_f2_anim ;8 (UP-LEFT)
SUBR rzr_torso_anims_table
; old = up right
.long rzr_torso2_anim ;new = up right
.long rzr_2_to_4_turn2_anim ; = down right
.long rzr_2_to_6_turn2_anim ; = down left ***
.long rzr_2_to_8_turn2_anim ; = up left
; old = down right
.long rzr_4_to_2_turn2_anim ;new = up right
.long rzr_torso4_anim ; = down right
.long rzr_4_to_6_turn2_anim ; = down left
.long rzr_4_to_8_turn2_anim ; = up left ***
; old = down left
.long rzr_6_to_2_turn2_anim ;new = up right ***
.long rzr_6_to_4_turn2_anim ; = down right
.long rzr_torso6_anim ; = down left
.long rzr_6_to_8_turn2_anim ; = up left
; old = up left
.long rzr_8_to_2_turn2_anim ;new = up right
.long rzr_8_to_4_turn2_anim ; = down right ***
.long rzr_8_to_6_turn2_anim ; = down left
.long rzr_torso8_anim ; = up left
******************************************************************************
.end