wwf-wrestlemania/ADAM.ASM

1740 lines
32 KiB
NASM
Raw Normal View History

2021-04-06 15:21:54 -07:00
**************************************************************
*
* Software: Jamie Rivett
* Initiated: 9/3/93
*
* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC.
*
**************************************************************
.file "adam.asm"
.title "adam bomb specific game code"
.width 132
.option b,d,l,t
.mnolist
.include "macros.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 wres_get_but_val_down,wres_get_but_val_cur
.ref wres_get_stick_val_cur
.ref change_anim1,change_anim1a
.ref change_anim2
.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 face_each_other
.ref lineup_grapple
.ref break_lockup
.ref climb_turnbuckle
;from DCSSOUND.ASM
.ref triple_sound
;from PAL.ASM
.ref pal_find,pal_set
;animation sequence
.ref wres_slave_anim
.ref adm_zip_anim
.ref adm_stand2_anim,adm_stand8_anim
.ref adm_stand4_anim,adm_stand6_anim
.ref adm_torso2_anim,adm_torso8_anim
.ref adm_torso4_anim,adm_torso6_anim
.ref adm_2_to_4_turn_anim,adm_8_to_6_turn_anim ;stand
.ref adm_4_to_2_turn_anim,adm_6_to_8_turn_anim
.ref adm_4_to_6_turn_anim,adm_6_to_4_turn_anim
.ref adm_2_to_8_turn_anim,adm_8_to_2_turn_anim
.ref adm_4_to_8_turn_anim,adm_6_to_2_turn_anim
.ref adm_2_to_6_turn_anim,adm_8_to_4_turn_anim
.ref adm_2_to_4_turn2_anim,adm_8_to_6_turn2_anim ;torso
.ref adm_4_to_2_turn2_anim,adm_6_to_8_turn2_anim
.ref adm_4_to_6_turn2_anim,adm_6_to_4_turn2_anim
.ref adm_2_to_8_turn2_anim,adm_8_to_2_turn2_anim
.ref adm_4_to_8_turn2_anim,adm_6_to_2_turn2_anim
.ref adm_2_to_6_turn2_anim,adm_8_to_4_turn2_anim
.ref adm_roll_frames
.ref adm_walk1_f2_anim,adm_walk2_f2_anim,adm_walk4_f2_anim
.ref adm_walk5_f2_anim,adm_walk6_f2_anim,adm_walk8_f2_anim
.ref adm_walk1_f4_anim,adm_walk2_f4_anim,adm_walk4_f4_anim
.ref adm_walk5_f4_anim,adm_walk6_f4_anim,adm_walk8_f4_anim
.ref adm_2_punch_anim,adm_4_punch_anim
.ref adm_2_butt_anim,adm_4_butt_anim
.ref adm_2_kick_anim,adm_4_kick_anim
.ref adm_2_uprcut_anim,adm_4_uprcut_anim
.ref adm_run_anim,adm_run2_anim,adm_ocrun_anim,adm_run_anim,adm_bounce_anim
.ref adm_2_lbowdrop_anim,adm_4_lbowdrop_anim
.ref adm_grab_throw_anim
.ref adm_2_grabfling_anim
.ref adm_4_grabfling_anim
.ref adm_2_graboh_anim,adm_heldoh_anim
.ref adm_4_graboh_anim
.ref adm_2_fly_cline_anim,adm_4_fly_cline_anim
.ref adm_flying_kick_anim
.ref adm_4_head_hit_anim
.ref adm_2_face_hit_anim,adm_4_face_hit_anim
.ref adm_2_head_hit_anim
.ref adm_2_body_hit_anim,adm_4_body_hit_anim
.ref adm_fall_back_anim
.ref adm_faceup_getup_anim
.ref adm_hitonground_anim
.ref adm_4_stomp_anim,adm_2_stomp_anim
.ref adm_2ndwind_anim
.ref adm_climb_up_anim,adm_climb_down_anim
.ref adm_2_hitblock_anim,adm_4_hitblock_anim
.ref adm_hiptoss_anim,adm_hiptossfall_anim
.ref adm_4_push_anim,adm_2_push_anim
.ref adm_4_bigboot_anim,adm_2_bigboot_anim
.ref adm_4_block_anim,adm_2_block_anim
.ref adm_4_losebal_anim,adm_2_losebal_anim
.ref adm_dizzy_anim
.ref adm_raisearm_anim
.ref adm_ohthrow1_anim
.ref adm_2_lockup_anim,adm_4_lockup_anim
******************************************************************************
* SYMBOLS DEFINED IN THIS FILE
******************************************************************************
* EQUATES FOR THIS FILE
#*****************************************************************************
adam_secret_moves
.long #button_hold ;must have this one
.long #grab_fling
;; .long #turbo_run
.long #2nd_wind1
.long #2nd_wind2
.long 0
#button_hold
rets
; BITS MASK
#grab_fling
.word B_GRAB | J_AWAY, J_UP | J_DOWN
.word 8000h | 10 ;max
.long scrt_grabfling
#turbo_run
.word B_TURBO, J_ALL
.word B_TURBO, J_ALL
.word 8000h | 16 ;max
.long scrt_run
#2nd_wind1
.word J_UP, 0
.word J_UP_AWAY, 0
.word J_AWAY, 0
.word J_DOWN_AWAY, 0
.word J_DOWN, 0
.word J_DOWN_TOWARD, 0
.word J_TOWARD, 0
.word J_UP_TOWARD, 0
.word J_UP, 0
.word 8000h | 50 ;max
.long scrt_2ndwind
#2nd_wind2
.word J_UP, 0
.word J_UP_TOWARD, 0
.word J_TOWARD, 0
.word J_DOWN_TOWARD, 0
.word J_DOWN, 0
.word J_DOWN_AWAY, 0
.word J_AWAY, 0
.word J_UP_AWAY, 0
.word J_UP, 0
.word 8000h | 50 ;max
.long scrt_2ndwind
.if 0
J_UP
J_UP_TOWARD
J_TOWARD
J_DOWN_TOWARD
J_DOWN
J_DOWN_AWAY
J_AWAY
J_UP_AWAY
B_PUNCH
B_KICK
B_BLOCK
B_GRAB
B_TURBO
B_RUN
.endif
scrt_grabfling
;Make this miss, rotate to missed opponent,
;and stay rotated to flung opponent, also make
;this work from both angles!
movi adm_2_grabfling_anim,a0
move *a13(FACING_DIR),a1
btst MOVE_UP_BIT,a1
jrnz #2_grb
movi adm_4_grabfling_anim,a0
#2_grb
calla change_anim1a
WRSND W_ADAM,GRABFLING_T1,GRABFLING_T2
rets
scrt_run
move *a13(ANIMODE),a0
btst MODE_UNINT_BIT,a0
jrnz #no_scrt_run
move *a13(PLYRMODE),a0
move *a13(PLYRMODE),a0
cmpi MODE_RUNNING,a0
jreq #no_scrt_run
cmpi MODE_BOUNCING,a0
jreq #no_scrt_run
calla start_run
#no_scrt_run
rets
scrt_2ndwind
movi adm_2ndwind_anim,a0
calla change_anim1a
rets
#*****************************************************************************
SUBR adam_ani_init
movi adm_stand2_anim,a0
calla change_anim1
movi adm_torso2_anim,a0
calla change_anim2
rets
#*****************************************************************************
*
* ADAMS CONTROL CODE
*
* a13 = * adam process
SUBR move_adam
movi 100h,a0 ;temp fix!
move a0,*a13(ANI_SPEED)
movi adam_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
#*****************************************************************************
mode_normal
move *a13(ANIMODE),a0
btst MODE_UNINT_BIT,a0
jrnz #no_interrupt
.if 1
calla get_opp_plyrmode
cmpi MODE_DEAD,a0
jrne #opp_not_dead
movi adm_raisearm_anim,a0
calla change_anim1a
rets
#opp_not_dead
GETLIFE
jruc #not_dizzy
jrnz #not_dizzy
SETMODE DIZZY
movi adm_dizzy_anim,a0
calla change_anim1a
rets
.endif
#not_dizzy
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
rets
#no_climb
calla execute_walk
#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
*
* MODE DX DZ ACTION
* ----------------------------------------------------
* normal < 60 92 headbutt
* dizzy " "
* normal > normal punch
* dizzy " "
*
* onground < 96 112 elbow drop
* onground > normal punch
*
* running | < 100 60 hip toss
* bouncing > normal punch
*
* onturnbkl normal punch
* climbturnbkl normal punch
*
JJXM_INIT
JJXM NORMAL, 60, 92,#punch_hdbutt,#punch_punch
JJXM DIZZY, 60, 92,#punch_hdbutt,#punch_punch
JJXM ONGROUND, 96,112,#punch_lbdrop,#punch_punch
JJXM RUNNING, 100, 60,#punch_hiptoss,#punch_punch
JJXM BOUNCING, 100, 60,#punch_hiptoss,#punch_punch
JJXM ONTURNBKL, #punch_punch
JJXM CLIMBTURNBKL, #punch_punch
.if DEBUG
LOCKUP
rets
.endif
*****
#punch_rets
rets
*****
#punch_punch
FACE24 adm,punch_anim
calla change_anim1a
WRSND W_ADAM,PUNCH_T1,PUNCH_T2
rets
*****
#punch_hdbutt
FACE24 adm,butt_anim
calla change_anim1a
WRSND W_ADAM,PUNCH_T1,PUNCH_T2
rets
*****
#punch_lbdrop
FACE24 adm,lbowdrop_anim
calla change_anim1a
WRSND W_ADAM,PUNCH_T1,PUNCH_T2
rets
*****
#punch_hiptoss
movi adm_hiptoss_anim,a0
calla change_anim1a
WRSND W_ADAM,PUNCH_T1,PUNCH_T2
rets
************
#block ;2
*
* MODE DX DZ ACTION
* ----------------------------------------------------
* all nothing. Ha.
*
rets
************
#super_punch ;4
*
* MODE DX DZ ACTION
* ----------------------------------------------------
* all uppercut
*
FACE24 adm,uprcut_anim
calla change_anim1a
WRSND W_ADAM,PUNCH_T1,PUNCH_T2
rets
************
#kick ;8
*
* MODE DX DZ ACTION
* ----------------------------------------------------
* normal normal kick
*
* onground < 96 112 stomp
* onground > normal kick
*
* running |
* bouncing big boot
*
* onturnbkl knee
*
JJXM_INIT
JJXM NORMAL, #kick_kick
JJXM DIZZY, #kick_kick
JJXM ONGROUND, 96,112,#kick_stomp,#kick_kick
JJXM RUNNING, #kick_bigboot
JJXM BOUNCING, #kick_bigboot
JJXM ONTURNBKL, #kick_kick
JJXM CLIMBTURNBKL, #kick_kick
.if DEBUG
LOCKUP
rets
.endif
*****
#kick_kick
FACE24 adm,kick_anim
calla change_anim1
WRSND W_ADAM,KICK_T1,KICK_T2
rets
*****
#kick_stomp
FACE24 adm,stomp_anim
calla change_anim1
WRSND W_ADAM,KICK_T1,KICK_T2
rets
*****
#kick_bigboot
FACE24 adm,bigboot_anim
calla change_anim1
WRSND W_ADAM,KICK_T1,KICK_T2
rets
************
#super_kick ;16
*
* MODE DX DZ ACTION
* ----------------------------------------------------
* normal normal kick
*
* onground < 96 112 stomp
* onground > normal kick
*
* running |
* bouncing big boot
*
* onturnbkl normal kick
*
JJXM_INIT
JJXM NORMAL, #skick_kick
JJXM DIZZY, #skick_kick
JJXM ONGROUND, 96,112,#skick_stomp,#skick_kick
JJXM RUNNING, #skick_bigboot
JJXM BOUNCING, #skick_bigboot
JJXM ONTURNBKL, #skick_kick
JJXM CLIMBTURNBKL, #skick_kick
.if DEBUG
LOCKUP
rets
.endif
*****
#skick_kick
FACE24 adm,kick_anim
calla change_anim1
WRSND W_ADAM,KICK_T1,KICK_T2
rets
*****
#skick_stomp
FACE24 adm,stomp_anim
calla change_anim1
WRSND W_ADAM,KICK_T1,KICK_T2
rets
*****
#skick_bigboot
FACE24 adm,bigboot_anim
calla change_anim1
WRSND W_ADAM,KICK_T1,KICK_T2
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(GETUP_TIME),a0 ;delay b4 gaining control
jrz #not_octrl
calla keep_attached ;if still being flung
jrnz #out_of_control ;(Z=0 - still attached)
;not_attached
#not_octrl
calla bounce_off_ropes
move *a13(MOVE_DIR),a0
movi #XRUN_VAL,a1
btst PLAYER_RIGHT_BIT,a0
jrnz #setxvel
movi -#XRUN_VAL,a1
#setxvel
move a1,*a13(OBJ_XVEL),L
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_but_val_cur
btst PLAYER_TURBO_BIT,a0 ;turbo down?
jrnz #run_down
;has released turbo - go back to walk mode
SETMODE NORMAL
#run_down
#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 #z ;2 (block)
.long #z ;3
.long #z ;4 (super punch)
.long #z,#z,#z ;5-7
.long #kick ;8 kick
.long #z,#z,#z,#z,#z,#z,#z ;9-15
.long #z ;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
************
#punch ;1
*
* MODE DX DZ ACTION
* ----------------------------------------------------
* all flying clothesline
*
FACE24 adm,fly_cline_anim
calla change_anim1
;halve his velocity
move *a13(OBJ_XVEL),a0,L
sra 1,a0
move a0,*a13(OBJ_XVEL),L
WRSND W_ADAM,FLYKICK_T1,FLYKICK_T2
rets
************
#kick ;#4
*
* MODE DX DZ ACTION
* ----------------------------------------------------
* all flying kick
*
*****
movi adm_flying_kick_anim,a0
calla change_anim1
SETMODE INAIR
move *a13(OBJ_XVEL),a0,L
sra 1,a0
move a0,*a13(OBJ_XVEL),L
WRSND W_ADAM,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
#*****************************************************************************
#ZROLL_VAL equ 20000h
#ROLL_SPEED equ 50h
#ROLL_FRAMES equ 9
mode_onground ;4
; move a13,a0
; calla wres_get_but_val_cur
; btst PLAYER_TURBO_BIT,a0
; jrz #no_cheat
;
; clr a0
; move a0,*a13(GETUP_TIME)
;#no_cheat
move *a13(GETUP_TIME),a0
jrnz #nomove
move a13,a0
calla wres_get_stick_val_cur
movi -#ROLL_SPEED,a2
movi -#ZROLL_VAL,a1
btst PLAYER_UP_BIT,a0
jrnz #setvel
movi #ROLL_SPEED,a2
movi #ZROLL_VAL,a1
btst PLAYER_DOWN_BIT,a0
jrnz #setvel
clr a1
clr a2
movi adm_faceup_getup_anim,a0
calla change_anim1
SETMODE NORMAL
rets
#setvel
move a1,*a13(OBJ_ZVEL),L
move *a13(ROLL_POS),a0
add a2,a0
jrp #ok1
addi #ROLL_FRAMES<<8,a0
#ok1
cmpi #ROLL_FRAMES<<8,a0
jrlt #ok2
; subi #ROLL_FRAMES,a0
subi #ROLL_FRAMES<<8,a0
#ok2
move a0,*a13(ROLL_POS)
move *a13(ROLL_POS),a0
srl 8,a0
sll 5,a0
addi adm_roll_frames,a0
move *a0,a0,L
move a0,*a13(CUR_FRAME),L
#nomove
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 adm_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
movi adm_climb_down_anim,a0
calla change_anim1
SETMODE CLIMBTURNBKL
rets
#no_climbdown
move a13,a0
calla wres_get_but_val_down
andi 01111b,a0 ;mask out turbo button
jrz #no_exit
SETMODE INAIR
.ref adm_diveofftb_anim
movi adm_diveofftb_anim,a0
calla change_anim1
rets
#no_exit
rets
#*****************************************************************************
* blocking
mode_block ;7
move a13,a0
calla wres_get_but_val_cur
btst PLAYER_BLOCK_BIT,a0
jrnz #still_blocking
SETMODE NORMAL
#still_blocking
rets
#*****************************************************************************
* adam with zero health
mode_dizzy ;8
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
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)
#no_interrupt
rets
#still_attached
move a13,a0
calla wres_get_but_val_down
andi 011111b,a0
X32 a0
addi #action_table,a0
move *a0,a0,L
call a0
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
*
* MODE DX DZ ACTION
* ----------------------------------------------------
* all overhead throw
*
movi adm_ohthrow1_anim,a0
calla change_anim1
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
move *a13(GETUP_TIME),a0
jrnz #still_going
;now get move off
;if opponents meter almost zero then break apart
calla break_lockup
rets
; .ref dnk_3_pile_driver_anim
; movi dnk_3_pile_driver_anim,a0
; .ref dnk_3_head_hold_anim
; movi dnk_3_head_hold_anim,a0
; calla change_anim1a
; SETMODE MASTER
SETMODE HEADHOLD
SETMODE NORMAL ;<---- temp!
PUSH a13
move *a13(ATTACH_PROC),a13,L
movi MODE_SLAVE,a0
move a0,*a13(PLYRMODE)
; movi wres_slave_anim,a0
; .ref dnk_3_head_held_anim
; movi dnk_3_head_held_anim,a0
; calla change_anim1a
PULL a13
rets
#still_going
calla lineup_grapple
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(ANIMODE),a0
btst MODE_END_BIT,a0
jrz #not_ended
clr a0
movi MODE_NORMAL,a1
move a1,*a13(PLYRMODE)
move *a13(ATTACH_PROC),a10,L
jrz #skp
move a1,*a10(PLYRMODE)
move a0,*a10(ATTACH_PROC),L
#skp
move a0,*a13(ATTACH_PROC),L
#not_ended
rets
#*****************************************************************************
#VEL equ 30000h
#DVEL equ 21f0eh
SUBR adm_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 adm_rotate_anims_table
; old = up right
.long adm_stand2_anim ;new = up right
.long adm_2_to_4_turn_anim ; = down right
.long adm_2_to_6_turn_anim ; = down left ***
.long adm_2_to_8_turn_anim ; = up left
; old = down right
.long adm_4_to_2_turn_anim ;new = up right
.long adm_stand4_anim ; = down right
.long adm_4_to_6_turn_anim ; = down left
.long adm_4_to_8_turn_anim ; = up left ***
; old = down left
.long adm_6_to_2_turn_anim ;new = up right ***
.long adm_6_to_4_turn_anim ; = down right
.long adm_stand6_anim ; = down left
.long adm_6_to_8_turn_anim ; = up left
; old = up left
.long adm_8_to_2_turn_anim ;new = up right
.long adm_8_to_4_turn_anim ; = down right ***
.long adm_8_to_6_turn_anim ; = down left
.long adm_stand8_anim ; = up left
SUBR adm_leg_anims_table
; MOVE
;(#1 - UP) FACING
.long adm_walk1_f2_anim ;1 (UP)
.long adm_walk1_f2_anim ;2 (UP_RIGHT)
.long adm_walk1_f4_anim ;3 (RIGHT)
.long adm_walk1_f4_anim ;4 (DOWN_RIGHT)
.long adm_walk1_f4_anim ;5 (DOWN)
.long adm_walk1_f4_anim ;6 (DOWN_LEFT)
.long adm_walk1_f2_anim ;7 (LEFT)
.long adm_walk1_f2_anim ;8 (UP-LEFT)
;(#2 - UP-RIGHT)
.long adm_walk2_f2_anim ;1 (UP)
.long adm_walk2_f2_anim ;2 (UP_RIGHT)
.long adm_walk2_f2_anim ;3 (RIGHT)
.long adm_walk2_f4_anim ;4 (DOWN_RIGHT)
.long adm_walk8_f4_anim ;5 (DOWN)
.long adm_walk8_f4_anim ;6 (DOWN_LEFT)
.long adm_walk4_f2_anim ;7 (LEFT)
.long adm_walk4_f2_anim ;8 (UP-LEFT)
;(#3 - RIGHT)
.long adm_walk2_f2_anim ;1 (UP)
.long adm_walk2_f2_anim ;2 (UP_RIGHT)
.long adm_walk2_f2_anim ;3 (RIGHT)
.long adm_walk4_f4_anim ;4 (DOWN_RIGHT)
.long adm_walk4_f4_anim ;5 (DOWN)
.long adm_walk8_f4_anim ;6 (DOWN_LEFT)
.long adm_walk6_f2_anim ;7 (LEFT)
.long adm_walk6_f2_anim ;8 (UP-LEFT)
;(#4 - DOWN-RIGHT)
.long adm_walk2_f2_anim ;1 (UP)
.long adm_walk8_f2_anim ;2 (UP_RIGHT)
.long adm_walk4_f4_anim ;3 (RIGHT)
.long adm_walk4_f4_anim ;4 (DOWN_RIGHT)
.long adm_walk2_f4_anim ;5 (DOWN)
.long adm_walk6_f4_anim ;6 (DOWN_LEFT)
.long adm_walk2_f2_anim ;7 (LEFT)
.long adm_walk6_f2_anim ;8 (UP-LEFT)
;(#5 - DOWN)
.long adm_walk5_f2_anim ;1 (UP)
.long adm_walk5_f2_anim ;2 (UP_RIGHT)
.long adm_walk5_f4_anim ;3 (RIGHT)
.long adm_walk5_f4_anim ;4 (DOWN_RIGHT)
.long adm_walk5_f4_anim ;5 (DOWN)
.long adm_walk5_f4_anim ;6 (DOWN_LEFT)
.long adm_walk5_f2_anim ;7 (LEFT)
.long adm_walk5_f2_anim ;8 (UP-LEFT)
;(#6 - DOWN-LEFT)
.long adm_walk2_f2_anim ;1 (UP)
.long adm_walk6_f2_anim ;2 (UP_RIGHT)
.long adm_walk2_f2_anim ;3 (RIGHT)
.long adm_walk6_f4_anim ;4 (DOWN_RIGHT)
.long adm_walk2_f4_anim ;5 (DOWN)
.long adm_walk4_f4_anim ;6 (DOWN_LEFT)
.long adm_walk2_f2_anim ;7 (LEFT)
.long adm_walk8_f2_anim ;8 (UP-LEFT)
;(#7 - LEFT)
.long adm_walk2_f2_anim ;1 (UP)
.long adm_walk6_f2_anim ;2 (UP_RIGHT)
.long adm_walk6_f2_anim ;3 (RIGHT)
.long adm_walk8_f4_anim ;4 (DOWN_RIGHT)
.long adm_walk4_f4_anim ;5 (DOWN)
.long adm_walk4_f4_anim ;6 (DOWN_LEFT)
.long adm_walk2_f2_anim ;7 (LEFT)
.long adm_walk2_f2_anim ;8 (UP-LEFT)
;(#8 - UP-LEFT)
.long adm_walk2_f2_anim ;1 (UP)
.long adm_walk4_f2_anim ;2 (UP_RIGHT)
.long adm_walk6_f2_anim ;3 (RIGHT)
.long adm_walk8_f4_anim ;4 (DOWN_RIGHT)
.long adm_walk6_f4_anim ;5 (DOWN)
.long adm_walk2_f4_anim ;6 (DOWN_LEFT)
.long adm_walk2_f2_anim ;7 (LEFT)
.long adm_walk2_f2_anim ;8 (UP-LEFT)
SUBR adm_torso_anims_table
; old = up right
.long adm_torso2_anim ;new = up right
.long adm_2_to_4_turn2_anim ; = down right
.long adm_2_to_6_turn2_anim ; = down left ***
.long adm_2_to_8_turn2_anim ; = up left
; old = down right
.long adm_4_to_2_turn2_anim ;new = up right
.long adm_torso4_anim ; = down right
.long adm_4_to_6_turn2_anim ; = down left
.long adm_4_to_8_turn2_anim ; = up left ***
; old = down left
.long adm_6_to_2_turn2_anim ;new = up right ***
.long adm_6_to_4_turn2_anim ; = down right
.long adm_torso6_anim ; = down left
.long adm_6_to_8_turn2_anim ; = up left
; old = up left
.long adm_8_to_2_turn2_anim ;new = up right
.long adm_8_to_4_turn2_anim ; = down right ***
.long adm_8_to_6_turn2_anim ; = down left
.long adm_torso8_anim ; = up left
#*****************************************************************************
* adam HAS JUST BEEN HIT
* a10 = * offensive process
* a13 = * defensive process (adam)
SUBR adam_hit
move *a10(ATTACK_MODE),a0 ;type of attack that hit adam
move a0,a1
sll 5,a1 ;x 32
addi #hit_table,a1
move *a1,a1,L ;appropriate routine
call a1
rets
#hit_table
.long _punch ;0
.long _hdbutt ;1
.long _kick ;2
.long _flykick ;3
.long _grabthrow ;4
.long _uprcut ;5
.long _lbowdrop ;6
.long _grabhold ;7
.long _grabfling ;8
.long _push ;9
.long _hiptoss ;10
.long _bigboot ;11
.long _knee ;12
.long _grapple ;13
.long _boxpunch ;14
.long _stomp ;15
.long _spinkick ;16
.long _cline ;17
.long _headhold ;18
.long _jumpkick ;19
.long _run ;20
.long _puppet ;21
.long _backhand ;22
.long _buzz ;23
#************************
;AMODE_PUNCH 0
_punch
;; cmpi 6,a1 ;a1 = consecutive hits
;; jrlt #ok
;; LOCKUP
;;#ok
WRSND W_ADAM,PUNCH_L1,PUNCH_L2
GETLIFE
jrnz #not_dizzy
movi adm_fall_back_anim,a0
calla change_anim1
SETMODE DEAD
rets
#not_dizzy
move *a13(PLYRMODE),a1
cmpi MODE_BLOCK,a1
jreq #block
DAMAGE 1
SETMODE NORMAL ;don't change if blocking
movi adm_2_head_hit_anim,a0
move *a13(FACING_DIR),a1
btst MOVE_UP_BIT,a1
jrnz #2_hit
movi adm_4_head_hit_anim,a0
#2_hit
calla change_anim1a
calla wres_collis_off
rets
#block
DAMAGE 1
movi adm_2_hitblock_anim,a0
move *a13(FACING_DIR),a1
btst MOVE_UP_BIT,a1
jrnz #2_blk
movi adm_4_hitblock_anim,a0
#2_blk
calla change_anim1a
movi [2,0],a2
move *a10(OBJ_XPOSINT),a0
move *a13(OBJ_XPOSINT),a1
cmp a0,a1 ;offx - defx
jrgt #slide_right ;attacker on left
neg a2
#slide_right
move a2,*a13(OBJ_XVEL),L
calla wres_collis_off
rets
#************************
;AMODE_HDBUTT 1
_hdbutt
DAMAGE 10
WRSND W_ADAM,HDBUTT_L1,HDBUTT_L2
movi adm_2_hitblock_anim,a0
move *a13(FACING_DIR),a1
btst MOVE_UP_BIT,a1
jrnz #2_blk
movi adm_4_hitblock_anim,a0
#2_blk
move *a13(PLYRMODE),a1
cmpi MODE_BLOCK,a1
jreq #block1
SETMODE NORMAL
movi adm_2_face_hit_anim,a0
move *a13(FACING_DIR),a1
btst MOVE_UP_BIT,a1
jrnz #2_noblk
movi adm_4_face_hit_anim,a0
#2_noblk
calla change_anim1a
movi [1,0],a2
move *a10(OBJ_XPOSINT),a0
move *a13(OBJ_XPOSINT),a1
cmp a0,a1 ;offx - defx
jrgt #go_rgt ;attacker on left
neg a2
#go_rgt
move a2,*a13(OBJ_XVEL),L
calla wres_collis_off
rets
#block1
calla change_anim1a
calla wres_collis_off
rets
#************************
;AMODE_KICK 2
_kick
DAMAGE 10
WRSND W_ADAM,KICK_L1,KICK_L2
movi adm_2_hitblock_anim,a0
move *a13(FACING_DIR),a1
btst MOVE_UP_BIT,a1
jrnz #2_blk
movi adm_4_hitblock_anim,a0
#2_blk
move *a13(PLYRMODE),a1
cmpi MODE_BLOCK,a1
jreq #anim
SETMODE NORMAL
movi adm_2_body_hit_anim,a0
move *a13(FACING_DIR),a1
btst MOVE_UP_BIT,a1
jrnz #anim
movi adm_4_body_hit_anim,a0
#anim
calla change_anim1a
calla wres_collis_off
rets
#************************
;AMODE_FLYKICK 3
_flykick
DAMAGE 10
WRSND W_ADAM,FLYKICK_L1,FLYKICK_L2
*
clr a0
move a0,*a13(ROLL_POS)
movi TSEC*2,a0
move a0,*a13(GETUP_TIME)
movi adm_fall_back_anim,a0
calla change_anim1
movi [4,0],a2
move *a10(OBJ_XPOSINT),a0
move *a13(OBJ_XPOSINT),a1
cmp a0,a1 ;offx - defx
jrgt #fall_right ;attacker on left
movi [-4,0],a2
#fall_right
move a2,*a13(OBJ_XVEL),L
SETMODE NORMAL
calla wres_collis_off
rets
#************************
;AMODE_GRABTHROW 4
_grabthrow
DAMAGE 10
SETMODE ATTACHED
move a10,*a13(ATTACH_PROC),L ;proc attached to
move a13,*a10(ATTACH_PROC),L
movi adm_heldoh_anim,a0
calla change_anim1
calla wres_collis_off
rets
#************************
;AMODE_UPRCUT 5
_uprcut
DAMAGE 10
WRSND W_ADAM,UPRCUT_L1,UPRCUT_L2
movi adm_fall_back_anim,a0
calla change_anim1
clr a0
move a0,*a13(ROLL_POS)
movi TSEC*2,a0
move a0,*a13(GETUP_TIME)
movi [10,0],a0
move a0,*a13(OBJ_YVEL),L
movi [2,0],a2
move *a10(OBJ_XPOSINT),a0
move *a13(OBJ_XPOSINT),a1
cmp a0,a1 ;offx - defx
jrgt #fall_right2 ;attacker on left
movi [-2,0],a2
#fall_right2
move a2,*a13(OBJ_XVEL),L
calla wres_collis_off
rets
#************************
;AMODE_LBOWDROP 6
_lbowdrop
DAMAGE 10
WRSND W_ADAM,LBOWDROP_L1,LBOWDROP_L2
movi adm_hitonground_anim,a0
calla change_anim1a
calla wres_collis_off
rets
#************************
;AMODE_GRABHOLD 7
_grabhold
DAMAGE 10
WRSND W_ADAM,GRABHOLD_L1,GRABHOLD_L2
SETMODE ATTACHED
move a10,*a13(ATTACH_PROC),L ;proc attached to
move a13,*a10(ATTACH_PROC),L
movi adm_heldoh_anim,a0
calla change_anim1
calla wres_collis_off
rets
#************************
;AMODE_GRABFLING 8
_grabfling
DAMAGE 10
SETMODE RUNNING
movi TSEC*2,a0
move a0,*a13(GETUP_TIME) ;delay b4 gaining control
move *a13(FACING_DIR),a0 ;use facing
andi PLAYER_LEFT_VAL|PLAYER_RIGHT_VAL,a0
move a0,*a13(MOVE_DIR)
move a10,*a13(ATTACH_PROC),L ;proc attached to
move a13,*a10(ATTACH_PROC),L
movi adm_ocrun_anim,a0
calla change_anim1
calla wres_collis_off
rets
#************************
;AMODE_PUSH 9
_push
DAMAGE 10
WRSND W_ADAM,LBOWDROP_L1,LBOWDROP_L2
SETMODE NORMAL
movi adm_2_losebal_anim,a0
move *a13(FACING_DIR),a1
btst MOVE_UP_BIT,a1
jrnz #2_loseb
movi adm_4_losebal_anim,a0
#2_loseb
calla change_anim1
movi [5,0],a2
move *a10(OBJ_XPOSINT),a0
move *a13(OBJ_XPOSINT),a1
cmp a0,a1 ;offx - defx
jrgt #fall_rightlb ;attacker on left
neg a2
#fall_rightlb
move a2,*a13(OBJ_XVEL),L
calla wres_collis_off
rets
#************************
;AMODE_HIPTOSS 10
_hiptoss
DAMAGE 10
WRSND W_ADAM,HIPTOSS_L1,HIPTOSS_L2
clr a0
move a0,*a13(ROLL_POS)
movi TSEC*2,a0
move a0,*a13(GETUP_TIME)
movi adm_hiptossfall_anim,a0
calla change_anim1
calla wres_collis_off
rets
#************************
;AMODE_BIGBOOT 11
_bigboot
DAMAGE 10
WRSND W_ADAM,LBOWDROP_L1,LBOWDROP_L2
clr a0
move a0,*a13(ROLL_POS)
movi TSEC*2,a0
move a0,*a13(GETUP_TIME)
movi adm_fall_back_anim,a0
calla change_anim1
movi [4,0],a2
move *a10(OBJ_XPOSINT),a0
move *a13(OBJ_XPOSINT),a1
cmp a0,a1 ;offx - defx
jrgt #fall_rightz ;attacker on left
movi [-4,0],a2
#fall_rightz
move a2,*a13(OBJ_XVEL),L
SETMODE NORMAL
calla wres_collis_off
rets
#************************
;AMODE_KNEE 12
_knee
calla wres_collis_off
rets
#************************
_grapple ;13
calla face_each_other
move a10,*a13(ATTACH_PROC),L ;proc attached to
move a13,*a10(ATTACH_PROC),L
move *a13(OBJ_ZPOSINT),a0
move *a10(OBJ_ZPOSINT),a1
add a1,a0
srl 1,a0
sll 16,a0
move a0,*a13(OBJ_ZPOS),L
move a0,*a10(OBJ_ZPOS),L
movi MODE_GRAPPLE,a0
move a0,*a13(PLYRMODE) ;slave
move a0,*a10(PLYRMODE) ;master
movi 20*3,a0 ;20 button presses
movi 1*3,a0 ;1 button press !!! temp !!!
move a0,*a13(GETUP_TIME)
move a0,*a10(GETUP_TIME)
movi wres_slave_anim,a0
calla change_anim1a
calla wres_collis_off
rets
#************************
_boxpunch ;14
_stomp ;15
_spinkick ;16
_cline ;17
_headhold ;18
_jumpkick ;19
_run ;20
_puppet ;21
_backhand ;22
_buzz ;23
rets
******************************************************************************
.end