wwf-wrestlemania/TEMPLATE.ASM

978 lines
18 KiB
NASM
Raw Normal View History

2021-04-06 15:21:54 -07:00
**************************************************************
*
* Software: Jamie Rivett
* Initiated: 5/17/94
*
* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC.
*
**************************************************************
.file "bam.asm"
.title "Bam Bam Bigelo 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 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 change_anim1,change_anim1a
.ref change_anim2,change_anim2a
.ref process_ptrs
.ref keep_attached
.ref get_opp_plyrmode
.ref count_hits
.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 inc_burnout
;from CROWD.ASM
.ref crowd_cheer
;from DCSSOUND.ASM
.ref triple_sound
;from WRESTLE.ASM
.ref set_turbo_status
.ref calc_line_x
.ref face_each_other
.ref lineup_grapple
.ref break_lockup
******************************************************************************
* ANIMATION SEQUENCES
******************************************************************************
* SYMBOLS DEFINED IN THIS FILE
******************************************************************************
* EQUATES FOR THIS FILE
#*****************************************************************************
bam_secret_moves
.long #button_hold ;must have this one
.long #turbo_run
.long #2nd_wind1
.long #2nd_wind2
.long 0
#button_hold
move a13,a0
calla wres_get_but_val_up
btst PLAYER_PUNCH_BIT,a0
jrz #no_punch
move *a13(PLYRNUM),a0
calla get_punch_dtime
cmpi 100,a0 ;> min?
jrlt #no_punch
cmpi 100+60,a0 ;< max?
jrgt #no_punch
callr scrt_2ndwind
setc
rets
#no_punch
clrc
rets
; BITS MASK
#turbo_run
.word B_TURBO, J_ALL
.word B_TURBO, J_ALL
.word 8000h | 16 ;max
.long scrt_run
#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
#2nd_wind2
.word J_UP, J_REAL_LR
.word J_UP_TOWARD, J_REAL_LR
.word J_TOWARD, J_REAL_LR
.word J_DOWN_TOWARD, J_REAL_LR
.word J_DOWN, J_REAL_LR
.word J_DOWN_AWAY, J_REAL_LR
.word J_AWAY, J_REAL_LR
.word J_UP_AWAY, J_REAL_LR
.word J_UP, J_REAL_LR
.word 8000h | 50 ;max
.long scrt_2ndwind
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
move *a13(ANIMODE),a0
btst MODE_UNINT_BIT,a0
jrnz #no_scrt_2ndwind
movi dnk_2ndwind_anim,a0
calla change_anim1a
#no_scrt_2ndwind
rets
#*****************************************************************************
SUBR bam_ani_init
movi bam_stand2_anim,a0
calla change_anim1a
movi bam_torso2_anim,a0
calla change_anim2a
rets
#*****************************************************************************
*
* DOINKS CONTROL CODE
*
* a13 = * doink process
SUBR move_bam
; movi 100h,a0 ;temp fix!
; move a0,*a13(ANI_SPEED)
movi bam_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 0
calla get_opp_plyrmode
cmpi MODE_DEAD,a0
jrne #opp_not_dead
movi bam_raisearm_anim,a0
calla change_anim1a
rets
#opp_not_dead
GETLIFE
jruc #not_dizzy
jrnz #not_dizzy
SETMODE DIZZY
movi dnk_dizzy_anim,a0
calla change_anim1a
rets
.endif
#not_dizzy
calla set_turbo_status
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 01111b,a0 ;mask out turbo button
sll 5,a0 ;x 32
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)
move a0,a4
btst MOVE_UP_BIT,a4 ;check if player should climb
jrz #not_top ;up the turnbuckle
move *a13(INRING),a0
jrnz #no_climb
move *a13(OBJ_ZPOSINT),a0
cmpi RING_TOP,a0
jrgt #not_top
move *a13(OBJ_XPOSINT),a0
cmpi RING_X_CENTER,a0
jrgt #right
;#left
calla get_rope_x
move *a13(OBJ_COLLX1),a1
cmp a0,a1 ;a1-a0
jrgt #no_climb
movi MOVE_UP_LEFT,a3 ;face top left turnbuckle
cmp a3,a4 ;Make sure UP/LEFT is pressed
jreq #climbit
jruc #no_climb
#right
calla get_rope_x
move *a13(OBJ_COLLX2),a1
cmp a0,a1 ;a1-a0
jrlt #no_climb
movi MOVE_UP_RIGHT,a3 ;face top right turnbuckle
cmp a3,a4 ;Make sure UP/RIGHT is pressed
jrne #no_climb
#climbit
move a3,*a13(NEW_FACING_DIR)
move *a13(FACING_DIR),a0
cmp a0,a3
jreq #climb
calla set_rotate_anim
movi #climb,a0 ;this routine gets executed
move a0,*a13(CODE_ADDR),L ;when the rotate anim
SETMODE WAITANIM ;finishes
rets
#climb
movi dnk_climb_up_anim,a0
calla change_anim1a
SETMODE CLIMBTURNBKL
rets
#not_top
#no_climb
calla execute_walk
#no_interrupt
rets
#action_table
.long #zip_action ;0
.long #block ;1
.long #grab ;2
.long #zip_action ;3
.long #punch ;4
.long #zip_action ;5
.long #zip_action ;6
.long #zip_action ;7
.long #kick ;8
.long #zip_action ;9
.long #zip_action ;10
.long #zip_action ;11
.long #zip_action ;12
.long #zip_action ;13
.long #zip_action ;14
.long #zip_action ;15
************
#zip_action ;0
rets
************
#punch ;1
rets
************
#block ;2
rets
************
#kick ;4
rets
************
#grab ;8
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 01111b,a0 ;mask out turbo button
sll 5,a0 ;x 32
addi #action_table,a0
move *a0,a0,L
call a0
#out_of_control
rets
#action_table
.long #zip_action ;0
.long #zip_action ;1
.long #zip_action ;2
.long #zip_action ;3
.long #flying_clothesline ;4 punch
.long #zip_action ;5
.long #zip_action ;6
.long #zip_action ;7
.long #flying_kick ;8 kick
.long #zip_action ;9
.long #zip_action ;10
.long #zip_action ;11
.long #zip_action ;12
.long #zip_action ;13
.long #zip_action ;14
.long #zip_action ;15
************
#zip_action
rets
************
#flying_clothesline ;1
rets
************
#flying_kick ;#4
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 11
mode_onground ;4
rets
#*****************************************************************************
*
* bouncing off ropes while running
mode_bouncing ;5
rets
#*****************************************************************************
*
* STANDING ON TOP OF TURNBUCKLE
mode_onturnbkl ;6
rets
#*****************************************************************************
* blocking
mode_block ;7
rets
#*****************************************************************************
* doink with zero health
mode_dizzy ;8
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
.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
#VEL2 equ 50000h
#DVEL2 equ 38917h
SUBR bam_velocity_table
; X, Z
.long 0, -#VEL ;0 UP
.long 0, -#VEL2
.long #DVEL, -#DVEL ;1 UP-RIGHT
.long #DVEL2, -#DVEL2
.long #DVEL, 0 ;2 RIGHT
.long #DVEL2, 0
.long #DVEL, #DVEL ;3 DOWN-RIGHT
.long #DVEL2, #DVEL2
.long 0, #VEL ;4 DOWN
.long 0, #VEL2
.long -#DVEL, #DVEL ;5 DOWN-LEFT
.long -#DVEL2,#DVEL2
.long -#DVEL, 0 ;6 LEFT
.long -#DVEL2,0
.long -#DVEL, -#DVEL ;7 UP-LEFT
.long -#DVEL2,-#DVEL2
#*****************************************************************************
SUBR bam_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_stand4_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_stand2_anim ; = up left
SUBR bam_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 bam_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_8_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_6_turn2_anim ; = up left ***
; old = down left
.long dnk_6_to_4_turn2_anim ;new = up right ***
.long dnk_6_to_4_turn2_anim ; = down right
.long dnk_torso4_anim ; = down left
.long dnk_4_to_2_turn2_anim ; = up left
; old = up left
.long dnk_8_to_2_turn2_anim ;new = up right
.long dnk_8_to_2_turn2_anim ; = down right ***
.long dnk_2_to_4_turn2_anim ; = down left
.long dnk_torso2_anim ; = up left
; *** should not happen
#*****************************************************************************
* BAM BAM HAS JUST BEEN HIT
* a10 = * offensive process
* a13 = * defensive process (DOINK)
SUBR bam_hit
move *a10(ATTACK_MODE),a0 ;type of attack that hit doink
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 _14 ;14
.long _15 ;15
.long _16 ;16
#************************
;AMODE_PUNCH 0
_punch
calla wres_collis_off
rets
#************************
;AMODE_HDBUTT 1
_hdbutt
calla wres_collis_off
rets
#************************
;AMODE_KICK 2
_kick
calla wres_collis_off
rets
#************************
;AMODE_FLYKICK 3
_flykick
calla wres_collis_off
rets
#************************
;AMODE_GRABTHROW 4
_grabthrow
calla wres_collis_off
rets
#************************
;AMODE_UPRCUT 5
_uprcut
calla wres_collis_off
rets
#************************
;AMODE_LBOWDROP 6
_lbowdrop
calla wres_collis_off
rets
#************************
;AMODE_GRABHOLD 7
_grabhold
calla wres_collis_off
rets
#************************
;AMODE_GRABFLING 8
_grabfling
calla wres_collis_off
rets
#************************
;AMODE_PUSH 9
_push
calla wres_collis_off
rets
#************************
;AMODE_HIPTOSS 10
_hiptoss
calla wres_collis_off
rets
#************************
;AMODE_BIGBOOT 11
_bigboot
calla wres_collis_off
rets
#************************
;AMODE_KNEE 12
_knee
calla wres_collis_off
rets
#************************
_grapple ;13
calla wres_collis_off
rets
#************************
_14 ;14
_15 ;15
_16 ;16
******************************************************************************
.end