wwf-wrestlemania/ADAM.ASM

1740 lines
32 KiB
NASM
Executable File
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: 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