wwf-wrestlemania/REACT9.ASM

279 lines
5.0 KiB
NASM
Raw Normal View History

2021-04-06 15:21:54 -07:00
**************************************************************
*
* Software: Jamie Rivett
* Initiated: 8/8/94
*
* COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC.
*
**************************************************************
.file "react9.asm"
.title "wrester reactions to hits"
.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 fall_back_tbl,head_hit_dizzy_tbl,head_hit_tbl,head_hit2_tbl
.ref block_hit_flail,triple_sound,hit_damage_pending
.ref change_anim1a,wres_collis_off,block_hit
.ref CALL_FACE_HIT,hitonground_tbl
.ref knee_hit_tbl,burn_tbl
******************************************************************************
* EXTERNAL ANIM SEQUENCES
;BAM BAM
;DOINK
;BRET
;LEX
;RAZOR
;SHAWN
;TAKER
;YOKO
******************************************************************************
* SYMBOLS DEFINED IN THIS FILE
******************************************************************************
* EQUATES FOR THIS FILE
#*****************************************************************************
;AMODE_RSLASH 40
SUBR hit_rslash
move *a13(PLYRMODE),a1
cmpi MODE_BLOCK,a1
jrnz #noblock
; move *a13(FACING_DIR),a0 ;check for hit
; move *a13(NEW_FACING_DIR),a1 ;from behind
; and a0,a1
; andi MOVE_LEFT|MOVE_RIGHT,a1
; jrz #noblock
calla block_hit_flail
rets
#noblock
;All of the damage amounts need to be in lookup tables linked to the wrestler
;who actually struck the blow.
CALLA CALL_FACE_HIT
GETLIFE
jrz #isdead
; calla create_damage_points
WRSNDX RSLASH_L1,RSLASH_L2
; move *a13(PLYR_DIZZY),a0
; jrnz #diz
;
; calla check_dizzy
; jrz #not_dizzy
;
; movi 5*TSEC,a0
; move a0,*a13(GETUP_TIME)
;
;#diz
; FACE24TBL head_hit_dizzy_tbl
; calla change_anim1a
;
;
;#not_dizzy
;
; calla inc_burnout
SETMODE NORMAL
#do_hit
move *a13(OBJ_YPOSINT),a14
move *a13(GROUND_Y),a0
sub a0,a14
cmpi 20,a14
jrge #fall_back
;normal punch
FACE24TBL head_hit2_tbl
calla change_anim1a
#isdead
calla wres_collis_off
rets
#fall_back
FACETBL fall_back_tbl
calla change_anim1a
calla wres_collis_off
movi [3,0],a2
move *a10(OBJ_XPOSINT),a0
move *a13(OBJ_XPOSINT),a1
cmp a0,a1 ;offx - defx
jrgt #fall_right ;attacker on left
neg a2
#fall_right
move a2,*a13(OBJ_XVEL),L
rets
#*****************************************************************************
;AMODE_HEADDSLASH 41
SUBR hit_headdslash
WRSNDX RSLASH_L1,RSLASH_L2
GETLIFE
jrz #isdead
FACE24TBL knee_hit_tbl
calla change_anim1a
movi 2C000h,a0
move a0,*a13(OBJ_YVEL),L
clr a0
move a0,*a13(OBJ_XVEL),L
;move a little bit toward the attacker
movk 5,a2
move *a10(OBJ_XPOSINT),a0
move *a13(OBJ_XPOSINT),a1
cmp a0,a1
jrle #ok
neg a2
#ok
add a2,a1
move a1,*a13(OBJ_XPOSINT)
calla wres_collis_off
rets
#isdead
FACETBL fall_back_tbl
calla change_anim1a
movi [4,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
#*****************************************************************************
;AMODE_HEADUSLASH 42
SUBR hit_headuslash
WRSNDX RSLASH_L1,RSLASH_L2
GETLIFE
jrz #isdead
FACE24TBL knee_hit_tbl
calla change_anim1a
movi 40000h,a0
move a0,*a13(OBJ_YVEL),L
clr a0
move a0,*a13(OBJ_XVEL),L
calla wres_collis_off
rets
#isdead
FACETBL fall_back_tbl
calla change_anim1a
movi [4,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
#*****************************************************************************
;AMODE_NAPALM 55
SUBR hit_napalm
;if we're standing, ignore this
move *a13(PLYRMODE),a0
cmpi MODE_NORMAL,a0
jreq #mode_normal
cmpi MODE_BLOCK,a0
jreq #mode_normal
calla wres_collis_off
move *a13(PLYRMODE),a0
cmpi MODE_ONGROUND,a0
jrz #on_grnd
cmpi MODE_DEAD,a0
jrnz #isdead
#on_grnd
FACETBL burn_tbl
calla change_anim1a
;set the DEAD_ANIM bit - if this hit kills us, we don't want to
; go through a normal convulse.
move *a13(STATUS_FLAGS),a14,L
ori M_DEAD_ANIM,a14
move a14,*a13(STATUS_FLAGS),L
WRSNDX LBOWDROP_L1,LBOWDROP_L2
movi 43h,a0
calla triple_sound
#isdead calla wres_collis_off
rets
#mode_normal
;OOPS! Don't do any damage.
clr a14
move a14,@hit_damage_pending
jruc #isdead
******************************************************************************
.end