wwf-wrestlemania/TEMPLATE.ASM

978 lines
18 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: 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